的幾點建議(假設你使用GNUmake,而不是別的)
首先,運行一次make -p
,你就會明白內建規則make
正在認識。尋找特別是COMPILE.c
和LINK.c
然後,我建議
CFLAGS= -g -Wall -I.
(因爲你真的想-g
進行調試,並-Wall
得到最警告)
而且你可能不需要
$(EXECUTABLE): $(OBJ)
gcc -o [email protected] $^ $(CFLAGS)
但是,我建議ST之前大多數其他規則添加
.PHONY: all clean
all: $(EXECUTABLES)
其實,我想編寫你的Makefile
(用於GNUmake
!)如下
# file Makefile
CC= gcc
RM= rm -vf
CFLAGS= -Wall -g
CPPFLAGS= -I.
SRCFILES= ex1.c ex2.C## or perhaps $(wildcard *.c)
OBJFILES= $(patsubst %.c, %.o, $(SRCFILES))
PROGFILES= $(patsubst %.c, %, $(SRCFILES))
.PHONY: all clean
all: $(PROGFILES)
clean:
$(RM) $(OBJFILES) $(PROGFILES) *~
## eof Makefile
記住標籤是顯著字符Makefile
-s (動作部分rules)。在這個答案中,至少應該以四個空格開頭的行應該以標籤字符開頭。
一旦一切都被調試,考慮運行make clean
清理所有內容,然後make -j CFLAGS=-O2 all
通過優化並行編譯所有內容。
最後,我建議使用remake
和運行remake -x
調試複雜Makefile
-s
當然,我假設你的目錄只有單一的文件程序。
順便說一句,還有其他的建設者計劃。也許你可能會考慮使用omake
不要忘了使用版本控制系統,如git作爲源文件。現在是學習這種工具的時候了。
Upvote for makefile magic! – Gui13
非常有幫助!感謝您瞭解make命令的內部工作原理。 – Raeven