在cpack输出中包含外部库

Including external libraries in cpack output

本文关键字:包含外 cpack 输出      更新时间:2023-10-16

我目前正在处理一个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 and make package,我从cpack输出(如果需要的话,我也可以包括一个cpack代码的例子(。示例App-linux.tar.bz2

- bin
-- Example_App
- Share
-- Resource files

而不是类似的东西:

- bin
-- Example_App
- Lib
-- OpenGL.a
- Share
-- Resource files

任何帮助都将不胜感激!

您必须为外部项目库显式添加安装规则。

例如:

install(FILES ${OPENGL_LIBRARIES}
RUNTIME DESTINATION bin COMPONENT RuntimeLibraries
LIBRARY DESTINATION bin COMPONENT RuntimeLibraries
ARCHIVE DESTINATION Lib COMPONENT Development
)

或者,您可以使用特定的库引用,如${OPENGL_gl_LIBRARY},而不是${OPENGL_LIBRARIES}。有关更多详细信息,请参阅模块/FindOpenGL.cmake。