假設今天我有一隻code,我想要讓他編譯的時候可以編譯出VER1與VER2的不同結果,以不動到source code為原則,該怎麼作呢?
首先Code必須這樣寫:
=========== source.c =================
#include <stdio.h>
int main()
{
#ifdef VER1
printf("This is VER1 !\n");
#else
printf("This is VER2 !\n");
#endif
return 0;
}
====================================
編譯的時候,如果要編譯出VER1,則必須如下修改:
gcc source.c -o source -D VER1
如果要編譯出VER2,則必須如下修改:
gcc source.c -o source -D VER2
若是這些#ifdef是要改在 Linux Kernel,在source code 加完之後,-D Macro的部分可以直接加在 Linux Kernel的Makefile裡面,請找看看CFLAGS相關的,並且加在CFLAGS上面試試看,編譯後應該可以成功。
另外Makefile加完成之後,編譯時記得要下:
# make VER1=1
這樣子編譯才會跑到VER1定義的地方