我有一個簡單的Makefile。當我不在依賴列表中使用變量時,它工作正常。否則,它給休耕錯誤:Makefile依賴變量
make: *** No rule to make target 'ext/configXML.o', needed by 'libledrgb-jni.so'. Stop.
而且當我這樣做
make print-LED-CFG-SRC
LED-CFG-SRC = ../led-cfg/src
所以值設置正確,altough如果我明確的補充規則,此文件:
ext/configXML.o: $(LED-CFG-SRC)/%.cc
@echo 'Building file: $<'
@${CXX} $(CXXFLAGS) -c -o "[email protected]" "$<"
它看起來像問題是用LED-CFG-SRC源文件:
make ext/configXML.o
make: *** No rule to make target '/configXML.cc', needed by 'ext/configXML.o'. Stop.
但該文件存在:
make list
ls -la ../led-cfg/src
total 340
drwxrwxr-x 2 gigi gigi 4096 lip 27 13:10 .
drwxrwxr-x 12 gigi gigi 4096 lip 28 10:08 ..
-rw-rw-r-- 1 gigi gigi 11918 lip 28 09:54 configXML.cc
-rw-rw-r-- 1 gigi gigi 2891 lip 27 13:17 configXML.h
這裏的源文件的Makefile:
EXTOBJS = ext/configXML.o ext/packet.o ext/tinyxml2.o ext/crypt.o ext/rozkaz.o
LED-CFG-SRC := ../led-cfg/src/
INCLUDES := -I$(LED-CFG-SRC)
CXXFLAGS := $(INCLUDES)
LIBRARY := libledrgb-jni.so
CXXFLAGS := $(INCLUDES) -fPIC -std=c++14
all: dirs $(LIBRARY)
$(LIBRARY): $(OBJFILES) $(EXTOBJS)
$(CXX) -shared -o [email protected] $^
ext/%.o: $(LED-CFG-SRC)/%.cc
@echo 'Building file: $<'
@${CXX} $(CXXFLAGS) -c -o "[email protected]" "$<"
clean:
rm -rf $(EXTOBJS)
list:
ls -la $(LED-CFG-SRC)
print-% : ; @echo $* = $($*)
.PHONY: clean dirs
我使用GNU使在黑暗4.1
看看用'make print-LED-RGB-SRC'打印的值。它說'../ LED/source/src /',而不是'../ led-cfg/src /'。錯別的地方? – Kusalananda
對不起,我已經打印出不同的變量。 –