2013-05-21 4 views
2

Для примера CMakeLists.txt прикреплен к вики CMake. Я также добавил ниже, что является фактической командой make для создания только компонентного TGZ. Я смущен и не вижу никакой помощи в документах.Уровень установки компонента cpack

CMakeLists.txt

cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR) 
project(MyLib) 

if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) 
    set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Install path prefix prepended on to install directories." FORCE) 
endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) 

set(CPACK_PACKAGE_NAME "MyLib") 
set(CPACK_PACKAGE_VENDOR "CMake.org") 
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyLib - CPack Component Installation Example") 
set(CPACK_PACKAGE_VERSION "1.0.0") 
set(CPACK_PACKAGE_VERSION_MAJOR "1") 
set(CPACK_PACKAGE_VERSION_MINOR "0") 
set(CPACK_PACKAGE_VERSION_PATCH "0") 
set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack Component Example") 


add_library(mylib mylib.cpp) 

add_executable(mylibapp mylibapp.cpp) 
target_link_libraries(mylibapp mylib) 

install(TARGETS mylib 
    ARCHIVE 
    DESTINATION lib 
    COMPONENT libraries) 
install(TARGETS mylibapp 
    RUNTIME 
    DESTINATION bin 
    COMPONENT applications) 
install(FILES mylib.h 
    DESTINATION include 
    COMPONENT headers) 

set(CPACK_COMPONENTS_ALL applications libraries headers) 

set(CPACK_COMPONENT_APPLICATIONS_DISPLAY_NAME "MyLib Application") 
set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries") 
set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C++ Headers") 

set(CPACK_COMPONENT_APPLICATIONS_DESCRIPTION 
    "An extremely useful application that makes use of MyLib") 
set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION 
    "Static libraries used to build programs with MyLib") 
set(CPACK_COMPONENT_HEADERS_DESCRIPTION 
    "C/C++ header files for use with MyLib") 


set(CPACK_GENERATOR "TGZ") 
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) 
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF) 
set(CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY OFF) 
set(CPACK_SET_DESTDIR ON) 
set(CPACK_PACKAGE_CONTACT "jhf") 

# This must always be last! 
include(CPack) 

У меня есть подобный CMakeLists.txt и когда я make package, я в конечном итоге получить все свои программы и библиотеки в TGZ. Что должна сделать команда make package, если мне нужен только TGZ с компонентом приложения из вышеприведенного CMakeLists.txt?

ответ

0

Взгляните на CPackComponent.

У меня точно такой же вопрос с вами.

Я начинаю видеть, и сегодня я пробовал целый день на этом, только сейчас я заметил, что модуль cmake под названием CPackComponent, который начинается, появляется в cmake 2.8.5 стандартных модулях.

На данный момент я еще не убедился, является ли это еще одной причиной. Но переменные в перечисленных вами документах можно найти в этом модуле.

cmake 2.8.5 - это самая ранняя версия, содержащая CPackComponent в стандартных модулях.

Есть чек на http://www.cmake.org/cmake/help/v2.8.5/cmake.html#module:CPackComponent

И CMake 2.8.8 является самой ранней версии перечислены переменные, которые вы хотите. например CPACK_COMPONENTS_ALL

За здесь http://www.cmake.org/cmake/help/v2.8.8/cmake.html#module:CPackComponent

Я сожалею, что я новичок тоже не может помочь вам больше.

0

Это просто. Просто установите переменную CMAKE CPACK_COMPONENTS_ALL в список компонентов, которые вы хотите отобразить при установке:

SET(CPACK_COMPONENTS_ALL applications) #only pack "applications" component