3

我有一个结构如下的项目:

\build
\deps
\src
CMakeLists.txt
clean.cmake

有一些库依赖项位于deps. 所有这些库都有 CMakeinstall命令。

之后install,输出文件将放在build目录中:

\build\fin\bin
\build\fin\lib
\build\fin\include

就我而言,我将运行cmake package生成一个二进制安装包,它会在_CPack_Packages.

问题是我不需要lib并且include被包含在二进制文件中。但我还没有找到解决方案。

我尝试了以下方法:

  1. CPACK_SOURCE_IGNORE_FILESCPACK_SOURCE_STRIP_FILES

这些是用于包装我认为的来源,不适用于我的情况。

  1. 使用安装后脚本instal(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/clean.cmake")删除不必要的文件/目录。

clean.cmake, if(EXISTS "${CMAKE_INSTALL_PREFIX}/bin/ProjectA.lib")returnedFALSE中,脚本运行时目录中没有任何内容${CMAKE_INSTALL_PREFIX},但完成后我可以找到文件。

  1. 尝试修改install_manifest.txt. 我还没有找到正确访问此文件的方法。我不确定这是否可行。

感谢您的帮助!


编辑:

install命令如下:

install(TARGETS ${INS_TARGETS}
    RUNTIME DESTINATION bin COMPONENT applications
    LIBRARY DESTINATION lib COMPONENT libraries
    ARCHIVE DESTINATION lib COMPONENT libraries
)
4

1 回答 1

5

尝试使用组件安装。

  1. 为每个install命令添加组件标签:

    install(TARGET app DESTINATION ... COMPONENT applications)
    install(TARGET library DESTINATION ... COMPONENT libraries)
    install(FILES <headers> DESTINATION ... COMPONENT headers)
    
  2. 在 CPack 中打开组件安装并列出要安装的组件:

    set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
    set(CPACK_COMPONENTS_ALL applications)
    include(CPack)
    

更多信息:http ://www.cmake.org/Wiki/CMake:Component_Install_With_CPack

于 2014-12-23T17:51:04.840 回答