我有使用 cmake 的 C++ 项目。我想./myapp --version
基于 git 提交进行版本控制(意思是提供唯一的输出)。手动它就像
gcc ... -DVERSION=$(git rev-list|wc -l)
如果在代码中定义,则使用 VERSION 宏。
这按预期工作。但是我应该如何将其写入CMakeLists.txt
(为简单起见,我们使用 echo )?我应该如何逃避它?
add_definitions(-DVERSION="$(echo 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
这似乎是你真正想要的。