自定义脚本的输出作为定义宏

时间:2012-06-18 20:43:10

标签: makefile cmake

我使用cmake进行C ++项目。我想基于git提交进行版本控制(意思是提供唯一的./myapp --version输出)。手动它就像

gcc ... -DVERSION=$(git rev-list|wc -l)

并使用VERSION宏(如果在代码中定义。

这可以按预期工作。但是我应该如何将其写入CMakeLists.txt(为了简单起见,让我们使用echo)?我该怎么逃避呢?

add_definitions(-DVERSION="$(echo 1)")

1 个答案:

答案 0 :(得分:1)

在cmake 2.8.8中你可以:

add_definitions(demo -D`echo VERSION=\\`git rev-list HEAD|wc -l\\``)

int main(int argc, char *argv[]) {
  printf("Version: %d", VERSION);

编译为:

/usr/bin/gcc   -std=c99 demo -D`echo VERSION=\`git rev-list HEAD|wc -l\`` -o CMakeFiles/demo.dir/src/demo.c.o   -c /home/doug/projects/libar/src/demo.c

结果:

build$ ./demo
Version: 88

这似乎是你真正想要的。

相关问题