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

时间:2017-05-10 07:09:22

标签: cmake

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

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

$ cmake .
$ make
> Hello World! (Output)

在Gnu中让这很容易:

bar: 
        echo Hello World!

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

cmake_minimum_required(VERSION 3.6)
project(foo)
add_custom_target(bar)
add_custom_command(
  TARGET   bar
  COMMAND  "echo Hello World!"
)

如果我只是致电make,目前无需做任何工作。我需要明确调用make bar。如何将bar添加到all食谱?

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

3 个答案:

答案 0 :(得分:9)

使用ALL选项默认构建目标

add_custom_target(bar ALL)

答案 1 :(得分:1)

当自定义命令实际上产生一些东西时,而不是仅打印“ 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
)

答案 2 :(得分:0)

扩展Tsyvarev的完美答案,为了进一步简化cmakelists.txt文件我们可以做到这一点:

cmake_minimum_required(VERSION 3.6)
project(foo)
add_custom_target(bar ALL
  COMMAND  "echo Hello World!"
)

这会将custom_command集成到custom_target中。