相关问题:C++构建系统-使用什么?
我正在寻找一个适用于我的C++项目的好的构建/依赖管理工具,具备以下期望功能:
- 能够通过名称、版本指定依赖关系
- 在编译我的应用程序时,自动包含依赖项的“include”目录
- 依赖项会自动下载、构建并链接到我的应用程序
- 传递性依赖也具有上述两个行为
- 能够指定测试范围的依赖关系
- 测试会自动构建和运行,可能会使用内存泄漏检查工具(例如valgrind)
- 可能运行覆盖率工具,例如gcov
- 跨平台支持
我曾尝试使用CMake,因为我看到很多项目都在使用它,但我发现很多时间都花在了“编写构建/依赖管理系统”上,而不是“使用它”。是的,我可以编写许多函数,如下所示:
function(RequireSomeLib artifact)
# ExternalProject_Add(SomeLib ... etc.)
# find SomeLib package
# add include dirs(artifact SomeLib_INCLUDE_DIRS)
# if SomeLib is not just a header library, also link its built library to the artifact
# for each of SomeLib's dependencies, do this same "call" (transitive dependencies' libraries must also be linked when building an executable)
endfunction()
对于每个依赖项都需要这样做。虽然繁琐,但目前我认为这是最干净的方法。
在假设 CMake被用于我项目所依赖的库 的前提下,有没有更好的解决这个问题的方法?
我还没有看到或尝试过SCons,AutoTools或QMake(但我会尝试的)。
在Java中,“检索依赖项,构建,测试和发布”问题要简单得多。._