假设有一个C程序,它将其版本存储char*在main.c 中的全局中.构建系统(gnu make)可以在构建时以某种方式提取此变量的值,以便构建的可执行文件可以具有程序中显示的确切版本名称吗?
我想要实现的是,鉴于来源:
char g_version[] = "Superprogram 1.32 build 1142";
Run Code Online (Sandbox Code Playgroud)
构建系统将生成一个名为的可执行文件 Superprogram 1.32 build 1142.exe
从宏定义您的版本变量:
char g_version[] = VERSION;
Run Code Online (Sandbox Code Playgroud)
然后让makefile在编译时在命令行上放置-D参数
gcc hack.c -DVERSION=\"Superprogram\ 1.99\"
Run Code Online (Sandbox Code Playgroud)
当然,您应该在您的示例中使用sed/grep/awk等来生成您的版本字符串.