我有一个项目结构如下:
build
deps
src
CMakeLists.txt
clean.cmake
deps
中有一些库依赖项。所有这些库都有 CMake install
命令。
install
后,输出文件将被放入build
目录中:
buildfinbin
buildfinlib
buildfininclude
就我而言,我将运行cmake package
来生成二进制安装包,它会在_CPack_Packages
中生成类似的东西。
问题是我不需要lib
和include
包含在二进制文件中。但我还没有找到解决方案。
我尝试了以下方法:
-
CPACK_SOURCE_IGNORE_FILES
和CPACK_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