问题描述
- Linux下C语言项目,怎么基于不同宏值定义组合,自动化编译
-
一个Linux下的C语言项目,希望通过Macro实现每个功能模块都能自由打开/关闭,例如:
#define FEATURE_A 1 // 如果想关闭Feature_A,请定义为0
#define FEATURE_B 1 // 如果想关闭Feature_B,请定义为0
#define FEATURE_C 1 // 如果想关闭Feature_C,请定义为0
默认情况下,Feature A/B/C都是打开的,也就是都定义为1。但是我希望保证任意组合(2^3=8种组合)下,代码都能编译通过,并且这个工作可以通过自动化脚本来实现,而不是手工的一次次修改宏定义的值。
我能想到的一个思路是:Linux下命令行编译时,我可以添加编译选项"-DFEATURE_A=1 -DFEATURE_B=1 -DFEATURE_C=1",那么是否可以在编译脚本里实现类似如下伪码:
define $i, $j, $k;
for ($i=0; $i<1; $i++)
for ($j=0; $j<1; $j++)
for ($k=0; $k<1; $k++)
make -DFEATURE_A=$i -DFEATURE_B=$j -DFEATURE_C=$k
因为自己对脚本和gcc编译选项不熟悉,不知道是否有成熟的便捷实现方法,或者我自己的上述思路是否可行。特此求教,谢谢!
解决方案
谢谢这么快的回复!
请问以Bash为例,怎么做到“每次根据不同的变量,直接传到make命令参数中”?真的就像我提问里面给的伪码那样就行?
解决方案二:
可以,就是你的编译脚本每次根据不同的变量,直接传到make命令参数中,给不同的宏不同的数字,你的编译脚本用bash等都可以支持
时间: 2024-05-16 16:40:50