如何在cmake中向对象文件添加依赖项

时间:2017-11-25 01:37:28

标签: cmake

所以我试图将基于make的项目转换为cmake,并且无法解决它的工作原理。我已经弄清楚如何获取自定义命令来生成头文件,以及如何编译目标可执行文件的源文件,但我似乎无法将它们链接在一起 - 我无法理解如何触发自定义命令以生成头文件。这是我尝试做的一个微不足道的例子:

的CMakeLists.txt:

add_executable(test test.c)
add_custom_command(OUTPUT foo.h
  COMMAND echo "/* test */" > foo.h
)

test.c的:

#include "foo.h"
int main() { return 0; }

然而,当我运行cmake和make时,它给了我:

/home/cdodd/test/test.c:1:17: fatal error: foo.h: No such file or directory
compilation terminated.

似乎无法确定在编译test.c之前需要先创建foo.h.使用make我只需添加一个依赖项;我怎么用cmake做到这一点?

1 个答案:

答案 0 :(得分:0)

将生成的文件foo.h作为依赖项添加到可执行目标:

add_executable(testexe test.c foo.h)

这将使CMake将目标testexe的文件级依赖项添加到生成的构建系统中的文件foo.h