利用CFLAGS -D來定義巨集變數,經過編譯之後,就可以在.c檔案中使用此定義巨集來做判斷。
# Makefile
CC = gcc
RM = rm
CFLAGS += -DTest
TARGETS := myapp
$(TARGETS): main.c
$(CC) $(CFLAGS) $< -o $@
clean:
-$(RM) -f *.o
-$(RM) -f $(TARGETS)
$@:指的是編譯的目標檔,也就是$(TARGETS)的myapp
$<:指的是目前的相依檔,也就是$(TARGETS)後面的main.c,意思是若要編譯$(TARGETS),則必須先把main.c編譯
// main.c
#include <stdio.h>
int main()
{
#ifdef Test
printf("Hello Global variable Test\n");
#else
printf("Sorry no Global variable Test.\n");
#endif
return 0;
}
執行myapp結果如下所示:
當然除了定義變數之外,也可以指定變數值,Test=5來作為判斷條件
#Makefile
CC = gcc
RM = rm
CFLAGS += -D Test=5
TARGETS := myapp
$(TARGETS): main.c
$(CC) $(CFLAGS) $< -o $@
clean:
-$(RM) -f *.o
-$(RM) -f $(TARGETS)
//main.c
#include <stdio.h>
int main()
{
#if Test==5
printf("Hello Global variable Test,%d?\n",Test);
#else
printf("Sorry no Global variable Test,%d.\n",Test);
#endif
return 0;
}
結果如下所示
沒有留言:
張貼留言