В настоящее время я работаю над проектом 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}
, Увидеть Модули / FindOpenGL.cmake Больше подробностей.
Других решений пока нет …