gpt4 book ai didi

c++ - 在 C++ 中自动依赖管理的最干净的方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:42:27 25 4
gpt4 key购买 nike

<分区>

相关问题: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 中,“检索依赖项、构建、测试和发布”问题要简单得多._。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com