如何更改 make 內建規則

如何更改 make 內建規則

我想知道是否有一種方法可以在沒有 makefile 時更改 make 自動套用的規則。舉個例子,如果您make foo在包含一個名為的文件的目錄中寫入,即使該目錄中 沒有該文件foo.cpp,它也會執行 。g++ foo.cpp -o foomakefile

我想更改它們以滿足我的需要,例如 g++ foo.cpp -o foo --std=c++11 -W -O2 -I .... 但也為其他擴展名添加新規則,例如 .c、.java 或 .tex

我知道如何定義新規則,但除了在每個目錄中建立 makefile 之外,我不知道在哪裡指定它們。我想有一些文件包含所有這些內建規則,但我無法找到它或如何用我自己的規則之一重載它。

我主要使用 Mingw 和 cygwin。

答案1

根據手動的,規則其實是:

no 是由n.cc, n.cpp, 或n.C' ' 形式的配方自動產生的$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c。我們鼓勵您對 C++ 原始檔使用後綴“ .cc”,而不是“ .C”。

因此,要么調整環境變數(例如,在 中~/.bashrc),要么只是建立一個覆蓋該規則的 Makefile。

在沒有 Makefile 的目錄中使用make -p來了解所有預設值和內建規則。

相關內容