установка уровня компонента cpack

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

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?


person user2322491    schedule 21.05.2013    source источник


Ответы (2)


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

SET(CPACK_COMPONENTS_ALL applications) #only pack "applications" component
person Pierluigi    schedule 02.04.2014
comment
Обратите внимание, что если вы включаете более одного компонента для CPACK_COMPONENTS_ALL и вам нужен один архив, содержащий все компоненты (вместо одного архива для каждого компонента), вы можете установить следующее: set(CPACK_COMPONENTS_GROUPING ALL_COMPONENTS_IN_ONE) Дополнительная информация о модуле CPackComponent - person AndrewJC; 14.04.2018

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

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

Я новичок в cmake, и сегодня я потратил на это целый день, только сейчас я заметил модуль 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

Извините, я тоже новичок, больше ничем не могу вам помочь.

person Huitse Tai    schedule 23.11.2013