代码之家  ›  专栏  ›  技术社区  ›  Frank-Rene Schäfer

CMake:add_custom_command(),结果为目标[duplicate]

  •  0
  • Frank-Rene Schäfer  · 技术社区  · 7 年前

    我想用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 是一个不存在的目标。如果有我不知道的超级目标,那将是完美的。然后我就可以把它作为我的自定义命令的目标,而不用担心 酒吧 .

    0 回复  |  直到 8 年前
        1
  •  23
  •   Tsyvarev    9 年前

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

    add_custom_target(bar ALL)
    
        2
  •  3
  •   Frank-Rene Schäfer    7 年前

    当自定义命令实际生成一些内容时,而不是只打印“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
    )
    
        3
  •  2
  •   Stewart    9 年前

    扩展Tsyvarev的完美答案,简化Cmakelist。txt文件进一步我们可以这样做:

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

    这会将custom_命令集成到custom_目标中。

    推荐文章