cpack组件级别安装 [英] cpack component level install

查看:273
本文介绍了cpack组件级别安装的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

For the example CMakeLists.txt attached to CMake wiki. I also added below what is the actual make command to create just the component based TGZ. I am confused and not seeing any help in the documents.

CMakeLists.txt

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中。如果我只需要带有上面CMakeLists.txt中的应用程序组件的TGZ,make package命令应该是什么?

I have a similar CMakeLists.txt and when I do make package, I end up getting all my binaries and libraries in the TGZ. What should the make package command be if I need just a TGZ with application component from the above CMakeLists.txt?

推荐答案

是简单。
只需将CMAKE变量CPACK_COMPONENTS_ALL设置为要在安装中显示的组件列表:

It is simple. Just set the CMAKE variable CPACK_COMPONENTS_ALL to the list of components you want to appear in the installation:

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

这篇关于cpack组件级别安装的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆