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

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命令参数中”?真的就像我提问里面给的伪码那样就行?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算