首页 文章

使用相同的库CMake多个项目

提问于
浏览
1

在CMake中构建(不是一次)多个使用相同库的项目的做法是什么?据我所知,在CMake中,人们倾向于使用子目录方法 . 但是库不能是没有库源复制的多个项目的真实子目录 . 还有一个顶级的CMakeLists.txt方法,但我不认为这是一个很好的解决方案,因为你必须为每个项目创建它,它必须是项目目录的一个级别,它不能很好地控制源代码(像GIT)你想要单个项目的单一存储库/目录 .

2 回答

  • 1

    我实际上在这里找到了一个可接受的解决方案:http://www.mail-archive.com/cmake@cmake.org/msg39062.html它在某种程度上类似于在 add_subdirectory 中指定上层目录但不是't pollute project'的CMakeLists.txt文件,而是通过CMake参数传递依赖项目路径 . 这样一来,项目就知道了这背后的所有原因,所以可能没关系 .

  • 1

    CMake是一个跨平台制作工具,用于“制作”包含所包含子项目的项目 . 因此,任何一个来源都是这个结构的一部分 . 但是IMHO cmake不是管理一个主要项目树中所有项目的工具 .

    我的方法是 Build 独立的项目 . 每个项目都构建lib,测试,文档并将其安装到项目存储中 . 如果其他库或应用程序需要其中一个库,则在该项目的cmake文件中引用它 .

    因此,项目的发布是独立的,项目较小,可以根据需要进行组合 .

    我使用脚本来构建应用程序的所有库 . 但这可以用cmake代替 .

    • 根据库的构建,构建最顶级的项目

    • 将自定义命令添加到大多数顶级项目中以触发引用的lib的构建 .

    可能的方法:

    add_custom_command(TARGET myapp PRE_LINK
                       COMMAND cd /mypath/libA && mkdir build && cd build && cmake ../source && make install)
    add_custom_command(TARGET myapp PRE_LINK
                       COMMAND cd /mypath/libB && mkdir build && cd build && cmake ../source && make install)
    add_executable(myapp ${SOURCES})
    

相关问题