나는 간단한 Makefile을 가지고있다. 종속성 목록에서 변수를 사용하지 않을 때는 정상적으로 작동합니다. 그렇지 않으면 fallowing 오류 제공 :Makefile 의존성 변수
ext/configXML.o: $(LED-CFG-SRC)/%.cc
@echo 'Building file: $<'
@${CXX} $(CXXFLAGS) -c -o "[email protected]" "$<"
그것은 같습니다 또한
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
그래서 값이 제대로 설정되어 수행 할 때 문제는 소스 파일에 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
여기 소스 메이크입니다 :
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
죄송합니다. 다른 변수를 인쇄했습니다. –