我想用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
。
答案 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中。