【问题标题】:How do I automatically make after cmake finished generating the filescmake完成生成文件后如何自动制作
【发布时间】:2019-02-10 14:12:34
【问题描述】:

我目前正在尝试在 mac 上为我的 C++“Hello World 项目”设置一个“自动构建过程”,该项目使用 Cmake 和 Visual Studio 代码。

我当前在终端中构建或使用 vscode 的 tasks.json 的工作流程如下,我发现它们非常乏味。

  1. cmake ...(在 build 文件夹中生成 cmake 和 make 文件)
  2. make(在 build 文件夹中创建应用程序的可执行文件)
  3. ./{应用程序的可执行文件}

因此,我研究了以下内容

  1. vs 代码的预启动任务
  2. cmake 的 add_custom_commands
  3. 自定义 bash 脚本
  4. python 脚本

但是我对上面的尝试有点迷茫,需要一些帮助。我的最终目标是通过在 vscode 中按 F5 或在终端中调用自定义 ./{command} 来自动构建和运行更新的代码。

【问题讨论】:

  • 您的项目的布局是否发生了很大变化?文件被添加和删除?依赖改变?如果没有,在再次运行 make 之前没有理由运行 cmake。
  • 我们正在使用一个 makefile,如果目标构建目录不存在,则调用 cmake,然后调用 make 来实际编译/链接。然后你只需要输入make
  • 布局不会有太大变化,但文件可以添加和删除几次。
  • 你知道你可以在终端中将多个命令串在一起吗? cmd1 && cmd2 && cmd3。甚至会出现这样的情况,即如果较早的命令失败,则后面的命令将不会运行。然后您可以使用向上箭头键从命令历史记录中调用此命令,两次击键将完成您的整个构建。
  • 您是否安装了 CMake 工具扩展?它确实使构建变得更加容易。

标签: c++ macos makefile cmake automation


【解决方案1】:

你可以运行

cmake --build

在您第一次配置构建之后。可选参数包括构建目录和要构建的目标。

【讨论】:

    【解决方案2】:

    结合大家的建议,我采取的方法是创建一个task.json,包含以下命令流

    • cmd1:cmake 生成 makefile 和 cmake 文件到构建文件夹
    • cmd2: make -j 8 构建多核
    • cmd1 && cmd2

    然后我在 launch.json 中进行了两次不同的启动。它们之间的主要区别在于 prelauch 任务。其中一个是“cmd1&&cmd2”,另一个只是“cmd2”。这样我就可以有两个热键,比如 F5 和 F7 供我选择。如果没有添加或删除文件夹结构和文件,我将按 F7,它只调用“cmd2”预启动任务,否则按 F5。

    我认为更好的方法是编写一个 bash 脚本或深入挖掘 cmakelist.txt,我相信它具有确定何时应该执行“cmd1 &&cmd2”或仅执行“cmd2”的“if 语句”。这样,我就不需要两个热键来构建/调试并在vscode中运行(不知道是否可以,我还没有尝试。)

    如果有人这样做,请在下面发表评论或创建新答案。

    谢谢大家!

    【讨论】:

      猜你喜欢
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      相关资源
      最近更新 更多