<分区>
相关问题:C++ Build Systems - What to use?
我正在努力为我的 C++ 项目寻找一个不错的构建/依赖管理工具,它具有以下所需的功能:
- 能够通过名称、版本指定依赖
- 依赖项的“include”目录在我的应用程序编译期间自动包含在内
- 依赖项会自动下载、构建并链接到我的应用程序
- 传递依赖也有以上两种行为
- 指定测试范围依赖性的能力
- 测试是自动构建和运行的,可能会使用内存泄漏检查工具(例如 valgrind)
- 可能运行覆盖工具,例如gcov
- 支持跨平台
我使用过 Maven,带有 [nar-maven-plugin] ,有时是 [cmake-maven plugin] .但是,这意味着我必须制作一个 [pom.xml per dependency] .这种方法不是特别好,有时,[nasty pom.xml]必须精心设计才能使事情正常进行。此外,它不支持运行 valgrind(尚未内置支持)。
我曾尝试使用 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 中,“检索依赖项、构建、测试和发布”问题要简单得多._。