【问题标题】:Automate CMake build using C++ script使用 C++ 脚本自动化 CMake 构建
【发布时间】:2019-04-24 15:10:53
【问题描述】:

我想使用 MSVC C++ 脚本自动构建 CMake,而不是使用 CMake-gui 生成构建或 CMake 终端,或者通过右键单击 CMakeLists.txt 使用集成在 MSVC 2017 上的 CMake 手动构建它.假设我们有一个包含 CMakeLists.txt 和 initialize.cpp 的项目(命名:initialize),所以我的问题是如何将这些命令转换为 C++ 代码,假设 build_initialize.cpp:

  • mkdir 构建
  • cd 构建/
  • cmake ..

所以,这个微小的 C++ 代码的要求是

  • 设置此项目的路径
  • 创建构建文件夹
  • 运行 CMake

最后,如果我执行 build_initialize.exe,工作只是使用 CMake 构建 initialize.cpp。目标是测试构建是否成功,作为另一个具有多个测试用例的项目中的测试用例。

你可能会问,为什么我没有将它包含在顶部的 CMakelists.txt 中,然后使用 CMake 从头开始​​构建它。如果我要这样做,我会得到一个可执行文件。因此,通过运行 CMake 的 ctest,initialize.exe 将需要一定的硬件速度。这不是目标。我的目标只是构建它。如果我运行 build_initialize.exe,只需使用 CMake 重复构建而不执行 initialize.exe。

抱歉,这可能很简单,但我缺乏 C++ 或 CMake 方面的良好经验。两天没成功。

【问题讨论】:

  • 您可以使用 Python、Perl 等脚本语言创建脚本。C++ 不是其中之一。
  • 在 Windows 上考虑使用内置的 PowerShell 脚本功能(或使批处理文件失败)。
  • 我希望您的问题是您在 c++ 代码中调用了超过 1 次 system() 或者没有正确地转义您的字符串。虽然这些只是猜测,因为您没有提供任何代码。
  • 如果您使用的是 Windows 版 Git,只需使用 bash 脚本。有比使用 C++ 更简单的方法。
  • 然后显示您尝试过和失败的内容。请记住,我们通常不会在 StackOverflow 上为您编写代码,但我们会尝试修复您损坏的代码。请编辑您的问题并添加您尝试的最小示例:minimal reproducible example

标签: c++ build cmake cmake-gui


【解决方案1】:

感谢大家的 cmets。 @Fred 已经给出了答案。要从 C++ 脚本运行 cmake,只需使用 system(),例如:System(cmake -S path_to_src -B path_to_bld)。 有用链接:https://faq.cprogramming.com/cgi-bin/smartfaq.cgi?id=1043284392&answer=1044654269

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 2014-06-20
    • 2011-03-14
    • 1970-01-01
    相关资源
    最近更新 更多