在cpack输出中包括外部库

时间:2018-08-04 04:06:54

标签: c++ opengl cmake cpack

我目前正在从事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 个答案:

答案 0 :(得分:0)

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

例如:

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