开发者社区> 问答> 正文

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编译选项不熟悉,不知道是否有成熟的便捷实现方法,或者我自己的上述思路是否可行。特此求教,谢谢!

展开
收起
杨冬芳 2016-07-12 13:22:32 2592 0
1 条回答
写回答
取消 提交回答
  • IT从业

    可以,就是你的编译脚本每次根据不同的变量,直接传到make命令参数中,给不同的宏不同的数字,你的编译脚本用bash等都可以支持

    bash支持命令参数$1等,然后你作为make参数

    2019-07-17 19:54:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
自动化、智能化网络运维 立即下载
从自动化到智能化的阿里运维体系 立即下载
小红书移动端自动化数据采集实践 立即下载