一個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命令參數中”?真的就像我提問裡面給的偽碼那樣就行?