泥巴鱼
2015-07-12 13:38
采纳率: 100%
浏览 1.8k

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 泥巴鱼 2015-07-12 14:14
    已采纳

    谢谢这么快的回复!
    请问以Bash为例,怎么做到“每次根据不同的变量,直接传到make命令参数中”?真的就像我提问里面给的伪码那样就行?

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • oyljerry 2015-07-12 13:42

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

    评论
    解决 无用
    打赏 举报