0
我有以下生成文件源文件沒有被使用編譯makefile規則
CXX = g++
CXXFLAGS = -c -g -pg -Wall -Wextra
LINK = g++
TARGET = ../../Binaries/tests
SOURCES := ../Src/$(wildcard *.cpp)
OBJS_DIR := ../Objects
OBJS = $(sort $(patsubst %.cpp, $(OBJS_DIR)/%.o, $(patsubst %.c, $(OBJS_DIR)/%.o, $(notdir $(SOURCES)))))
tests: $(TARGET)
$(TARGET): $(OBJS)
$(LINK) $? -o [email protected]
$(OBJS): $(SOURCES)
$(CXX) $(CXXFLAGS) $? -o [email protected]
其中,使用運行時make tests
(或只是簡單地make
),給出了以下的輸出:
g++ -o ../../Binaries/tests
g++: fatal error: no input files
compilation terminated.
make: *** [../../Binaries/tests] Error 4
這似乎對我來說,正在嘗試鏈接文件(還不存在),而不檢查$(OBJS)
的規則。我的目標是擁有一個完全自給自足的Makefile,能夠在../Src中找到*.cpp
文件,在../Objects中找到*.o
文件(它將生成itsef),但是我寫的規則doesn似乎沒有這樣的工作方式。任何人都可以告訴我我哪裏出了問題嗎?