我目前正在一个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
任何帮助将非常感激!
最佳答案
您将必须为外部项目库显式添加安装规则。
例如:
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。