在 cpack 输出中包含外部库
Including external libraries in cpack output
我目前正在开发一个 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。
我目前正在开发一个 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。