【发布时间】:2014-10-07 15:10:11
【问题描述】:
我需要一些与我不同实际上了解 CMAKE 的人的帮助。
问题: 我有这个 CMAKE 项目,它产生一个 .so/.dylib/.dll (它是另一个应用程序的插件),到目前为止一切都很好,它正在编译和链接并产生预期的输出。它被设置为像这样的 MODULE:
ADD_LIBRARY(${PROJECT_NAME} MODULE ${CORE_SRC} ${CORE_HEADERS})
具有大量外部依赖项和一些编译器/链接器设置。
并使用两个自定义目标进行构建:
ADD_CUSTOM_TARGET(debug
COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
COMMENT "Switch CMAKE_BUILD_TYPE to Debug")
ADD_CUSTOM_TARGET(release
COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
COMMENT "Switch CMAKE_BUILD_TYPE to Release")
我的问题是,在 osx 上,这个 dylib 必须打包为 osx BUNDLE,否则无法加载。我可以手动创建捆绑目录结构,但我的 CMAKE 知识并不全面,我相信我应该能够为我生成它。我确实尝试过一些示例,但我只能让它适用于可执行文件。
我想要将我的 dylib 安装到一个包中,并将其资源放在我的源目录外。在其他平台上,资源只是放在 dylib 旁边的文件夹中。然后将捆绑包或 dll 和文件夹安装到它们的目的地。
那么如何打包一个模块呢?有可能还是我在浪费时间?
【问题讨论】: