【问题标题】:output from custom script as define macro自定义脚本的输出作为定义宏
【发布时间】:2012-06-18 20:43:10
【问题描述】:

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

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

如果在代码中定义,则使用 VERSION 宏。

这按预期工作。但是我应该如何将它写入CMakeLists.txt(为简单起见,我们使用echo)?我应该如何摆脱它?

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

【问题讨论】:

标签: makefile cmake


【解决方案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

这似乎是你真正想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2021-07-20
    相关资源
    最近更新 更多