Makefile中用巨集定義進行條件編譯

2021-05-23 02:38:56 字數 759 閱讀 3865

在源**裡面如果這樣是定義的:

#ifdef   macroname

//可選**

#endif

那在makefile裡面

gcc   -d   macroname=macrodef

或者 gcc   -d   macroname

這樣就定義了預處理巨集,編譯的時候可選**就會被編譯進去了。

對於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

#include

main()

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

執行: ./test

輸出: hello p2

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

執行: ./test

輸出: hello p1

Makefile進行巨集定義

實際上是gcc命令支援 d巨集定義,相當於c中的全域性 define gcc d name gcc d name definition makefile中可以定義變數 和巨集很像 但是是給make直譯器用的,對所編譯的檔案完全沒有作用。在makefile中我們可以通過巨集定義來控制源程式的編譯。只要...

Makefile中進行巨集定義

實際上是gcc命令支援 d巨集定義,相當於c中的全域性 define gcc d name gcc d name definition makefile中可以定義變數 和巨集很像 但是是給make直譯器用的,對所編譯的檔案完全沒有作用。mstar 巨集定義方式 字串定義方式和值定義方式 cc tvo...

M 在Makefile中進行巨集定義 D

在源 裡面如果這樣是定義的 ifdef macroname 可選 endif 那在makefile裡面 gcc d macroname macrodef 或者gcc d macroname 這樣就定義了預處理巨集,編譯的時候可選 就會被編譯進去了。對於gcc編譯器,有如下選項 d macro str...