使用下面作爲一個例子生成文件:Makefile文件不會擴大依賴性
CC=g++
CFLAGS=-c -Wall
LDFLAGS=-lfoobar
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) -o [email protected]
$(OBJECTS): $(CC) $(CFLAGS) $< -o [email protected]
$ <總是什麼也不擴展。
我試圖將其更改爲以下:
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp foo.cpp bar.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(OBJECTS) # or main.o foo.o bar.cpp $(CC) $(LDFLAGS) $(OBJECTS) -o [email protected]
.cpp.o: $(CC) $(CFLAGS) $< -o [email protected]
這告訴我,有一個爲main.o
我在這裏失去了一些東西沒有什麼規則?我看到很多使用這些語法和/或變量和依賴關係的make文件。
'$ <'代表'$(OBJECTS)'的先決條件列表,你沒有給出任何。只需使用像trojanfoe建議的內置規則。 –
第二次嘗試的語法看起來不錯。你檢查了make -rd的輸出並確保main.cpp存在嗎? – thiton