私は単純なMakefileを持っています。私が依存関係のリストで変数を使用していないときはうまく動作します。それ以外の場合は、休閑エラーを与える:私はMakefile依存関係変数
make print-LED-CFG-SRC
LED-CFG-SRC = ../led-cfg/src
を行うとき、私は明示的にこのファイルのルールを追加する場合altough
make: *** No rule to make target 'ext/configXML.o', needed by 'libledrgb-jni.so'. Stop.
はさらにので値が正しく設定されています
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-cfg/src /'ではなく '../ LED/source/src /'と表示されます。タイプミスどこか? – Kusalananda
申し訳ありませんが、私は別の変数を印刷しました。 –