我正在使用CMake构建一个C++静态库,供其他内部开发团队在更大的项目中使用。该库可作为GIT存储库供其他团队使用,他们可以克隆或包含作为子模块。这个库在运行时依赖于一个包含一些数据的文件夹。这个文件夹需要位于使用这个库的主可执行文件的旁边。我希望我的库的任何用户都可以通过在他们的CMakeLists.txt中简单地执行此操作来使用它 add_subdirectory()
add_executable(BigExe )
target_link_library(BigExe MyLibrary)
install(TARGETS BigExe)安装目录应该包含BigExe二进制文件,紧挨着它的是包含库所需数据的文件夹。install(...)命令在我的库的CMakeLists.txt中应该是什么样子?我也准备接受一个“更广泛”的方法,包括对我的库的分发方式进行更深层次的重组。到目前为止,我的库的CMakeLists.txt是这样的 add_library(MyLibrary STATIC )
target_include_directories(MyLibrary
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include)
target_compile_definitions(MyLibrary PUBLIC )
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/MyData" DESTINATION bin)当且仅当BigExe安装在相同的bin子文件夹中时,此解决方案才有效,强制我的库的用户遵循我选择的文件夹结构。我的图书馆应该把它的东西放在它的用户放东西的地方...该库需要针对Windows和Linux系统进行编译。
|