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

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

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

这似乎是您真正想要的。

https://stackoverflow.com/questions/11090724/

相关文章:

asp.net - ASP.NET Web应用程序中的菜单

reporting-services - SSRS XML数据源如何查询具有多个父子层次结构的XML

sharepoint-2010 - 基于 ADFS 声明的 SharePoint 2010 和嵌入式

jquery-mobile - orientationchange 事件不起作用

scala - 在Play中定义全局变量的最佳方法! 2.0应用

nservicebus - 同一台机器上的分发者和 worker 端点队列

for-loop - 解析HTML文件

ruby-on-rails - ActiveModel::MassAssignmentSecurit

json - 如何反序列化接口(interface)的子列表?

asp.net - 关于字符串生成器