在 cpack 输出中包含外部库
Posted
技术标签:
【中文标题】在 cpack 输出中包含外部库【英文标题】:Including external libraries in cpack output 【发布时间】:2018-08-04 04:06:53 【问题描述】:我目前正在开发一个 cmake 项目,该项目正在使用通过 find_package 函数导入的外部库。我的问题围绕 cpack 以及我应该如何将找到的包添加到 cpack 输出中。例如,如果我使用这个
find_package(OpenGL REQUIRED)
add_executable(Example_App MACOSX_BUNDLE src/main.cpp)
target_include_directories(Example_App SYSTEM PUBLIC $OPENGL_INCLUDE_DIR)
target_link_libraries(Example_App PUBLIC $OPENGL_LIBRARIES)
install(TARGETS Example_App
BUNDLE DESTINATION "."
RUNTIME DESTINATION bin)
如果我然后运行 cmake .. 然后 make 和 make package 我从 cpack 的输出(如果需要,我也可以包含我的 cpack 代码示例)然后是。 ExampleApp-linux.tar.bz2
- bin
-- Example_App
- Share
-- Resource files
而不是类似的东西:
- bin
-- Example_App
- Lib
-- OpenGL.a
- Share
-- Resource files
任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:您必须为外部项目库显式添加安装规则。
例如:
install(FILES $OPENGL_LIBRARIES
RUNTIME DESTINATION bin COMPONENT RuntimeLibraries
LIBRARY DESTINATION bin COMPONENT RuntimeLibraries
ARCHIVE DESTINATION Lib COMPONENT Development
)
或者您可以使用特定的库引用,例如 $OPENGL_gl_LIBRARY
,而不是 $OPENGL_LIBRARIES
。详情请见Modules/FindOpenGL.cmake。
【讨论】:
以上是关于在 cpack 输出中包含外部库的主要内容,如果未能解决你的问题,请参考以下文章