天天看點

Makefile 宏定義 -D傳參數

一、GCC編譯器中使用:

-D macro=string,等價于在頭檔案中定義:#define   macro   string。
           

例如:-D TRUE=true,等價于:#define TRUE true

-D macro,等價于在頭檔案中定義:#define macro 1,實際上也達到了定義:#define macro的目的。

例如:-D Linux,等價于:#define LINUX 1(與#define LINUX作用類似)。

–define-macro macro=string與-D macro=string作用相同。

如:TEST.C 檔案

#include <stdio.h>
#include <stdlib.h>

main()
{
#ifdef p1
  printf("Hello p1");
#else
  printf("Hello p2");
#endif
 
}
           

1.編譯: gcc -o test test.c

運作: ./test

輸出: Hello p2
           

2.編譯: gcc -o test test.c -D p1

運作: ./test

輸出: Hello p1
           

二、在Makefile中進行宏定義-D

在Makefile中我們可以通過宏定義來控制源程式的編譯。隻要在Makefile中的CFLAGS中通過選項-D來指定你于定義的宏即可。

如:

CFLAGS += -D _YUQIANG
           

在編譯的時候加上此選項就可以了: $(CC) $(CFLAGS) $^ -o $@

DEFINES +=  -D BVS_DIRECTION=$(BVS_DIRECTION) \

            -D BVS_LAYOUT=$(BVS_LAYOUT) \

            -D $(BVS_TYPE)\