我有一个结构如下的项目:
\build
\deps
\src
CMakeLists.txt
clean.cmake
Run Code Online (Sandbox Code Playgroud)
有一些库依赖项位于deps
. 所有这些库都有 CMakeinstall
命令。
之后install
,输出文件将放在build
目录中:
\build\fin\bin
\build\fin\lib
\build\fin\include
Run Code Online (Sandbox Code Playgroud)
就我而言,我将运行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
)
Run Code Online (Sandbox Code Playgroud)
尝试使用组件安装。
为每个install
命令添加组件标签:
install(TARGET app DESTINATION ... COMPONENT applications)
install(TARGET library DESTINATION ... COMPONENT libraries)
install(FILES <headers> DESTINATION ... COMPONENT headers)
Run Code Online (Sandbox Code Playgroud)在 CPack 中打开组件安装并列出要安装的组件:
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
set(CPACK_COMPONENTS_ALL applications)
include(CPack)
Run Code Online (Sandbox Code Playgroud)更多信息:http : //www.cmake.org/Wiki/CMake : Component_Install_With_CPack
归档时间: |
|
查看次数: |
4724 次 |
最近记录: |