gpt4 book ai didi

cmake - 如何使用 CMake 从 CPack 二进制文件中排除文件/目录

转载 作者:行者123 更新时间:2023-12-04 12:52:17 42 4
gpt4 key购买 nike

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

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

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

install , 输出文件将被放入 build目录:
\build\fin\bin
\build\fin\lib
\build\fin\include

就我而言,我将运行 cmake package要生成二进制安装包,它会在 _CPack_Packages 中生成类似的内容.

问题是我不需要 libinclude要包含在二进制文件中。但我还没有找到解决办法。

我尝试了以下方法:
  • CPACK_SOURCE_IGNORE_FILESCPACK_SOURCE_STRIP_FILES .

  • 这些用于打包我认为的源代码,不适用于我的案例。
  • 使用安装后脚本 instal(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/clean.cmake")删除不必要的文件/目录。

  • clean.cmake , if(EXISTS "${CMAKE_INSTALL_PREFIX}/bin/ProjectA.lib")返回 FALSE${CMAKE_INSTALL_PREFIX}中什么都没有脚本运行时的目录,但我可以在它完成后找到文件。
  • 尝试修改install_manifest.txt .我还没有找到正确访问此文件的方法。我不确定这会起作用。

  • 感谢您的帮助!

    编辑:
    install命令如下:
    install(TARGETS ${INS_TARGETS}
    RUNTIME DESTINATION bin COMPONENT applications
    LIBRARY DESTINATION lib COMPONENT libraries
    ARCHIVE DESTINATION lib COMPONENT libraries
    )

    最佳答案

    尝试使用组件安装。

  • 为每个 install 添加组件标签命令:
    install(TARGET app DESTINATION ... COMPONENT applications)
    install(TARGET library DESTINATION ... COMPONENT libraries)
    install(FILES <headers> DESTINATION ... COMPONENT headers)
  • 在 CPack 中打开组件安装并列出要安装的组件:
    set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
    set(CPACK_COMPONENTS_ALL applications)
    include(CPack)

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

    关于cmake - 如何使用 CMake 从 CPack 二进制文件中排除文件/目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27619234/

    42 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com