默认情况下在CMake中构建自定义目标

Ste*_*art 5 cmake

我想用cmake运行自定义命令.这听起来像一个非常简单的任务/问题,但令人沮丧的是找到一个例子是多么困难.

这是我正在尝试做的事情:

$ cmake .
$ make
> Hello World! (Output)
Run Code Online (Sandbox Code Playgroud)

在Gnu中,这非常容易:

bar: 
        echo Hello World!
Run Code Online (Sandbox Code Playgroud)

但我正试图在cmake中这样做.基于我一直在阅读的内容,我应该能够使用以下CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.6)
project(foo)
add_custom_target(bar)
add_custom_command(
  TARGET   bar
  COMMAND  "echo Hello World!"
)
Run Code Online (Sandbox Code Playgroud)

如果我打电话,目前没有工作要做make.我需要明确地打电话make bar.我如何添加barall配方?

我试过添加add_dependency(foo bar),但是foo不存在的目标.如果有一些超级目标,我不知道那将是完美的.然后我可以使用它作为我的自定义命令的TARGET而不是打扰bar.

Tsy*_*rev 12

默认情况下,使用ALL选项构建目标:

add_custom_target(bar ALL)
Run Code Online (Sandbox Code Playgroud)


Fra*_*fer 5

当自定义命令实际上生成一些内容时,而不是仅打印“Hello World”,那么以下内容可能是合适的。

add_custom_target(Work ALL DEPENDS that.txt)

add_custom_command(
    OUTPUT   that.txt
    COMMAND  generator --from this.txt --produce that.txt
    DEPENDS  this.txt
)
Run Code Online (Sandbox Code Playgroud)