首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cpack组件级别安装

cpack组件级别安装
EN

Stack Overflow用户
提问于 2013-05-21 15:00:58
回答 2查看 5.7K关注 0票数 4

对于附加到CMake维基的示例CMakeLists.txt。我还在下面添加了实际的make命令来创建基于TGZ的组件。我很困惑,在文档中看不到任何帮助。

CMakeLists.txt

代码语言:javascript
复制
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时,我最终得到了我所有的二进制文件和库。如果我只需要一个来自上述CMakeLists.txt的带有应用程序组件的TGZ,那么make package命令应该是什么?

EN

回答 2

Stack Overflow用户

发布于 2014-04-02 16:17:14

这很简单。只需将CMAKE变量CPACK_COMPONENTS_ALL设置为您希望出现在安装中的组件列表:

代码语言:javascript
复制
SET(CPACK_COMPONENTS_ALL applications) #only pack "applications" component
票数 3
EN

Stack Overflow用户

发布于 2013-11-23 20:07:39

看看CPackComponent吧。

我也有同样的问题要问你。

我是cmake的初学者,今天我已经尝试了一整天,刚才我注意到了一个名为CPackComponent的cmake模块,它开始出现在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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16663955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档