Вот соответствующие правила для переменного:переменных в Makefile не распознается по маркам правильно
LIBAD = libadard.a
install: $(CRSLIB)/$(LIBAD)
$(CRSLIB)/$(LIBAD): $(LIBAD)
$(LIBAD): $(OBJECTS1)
OBJECTS1 = $(LIBAD)(libadardV.o)\
$(LIBAD)(a_delbb.o) $(LIBAD)(a_getbkm.o)\
...
$(LIBAD)(a_getbkm.o): a_getbkm.p \
$(KINCDIR)/dbug.h \
$(PRIMINC)/systypes.h \
$(PRIMINC)/externs.h \
$(PRIMINC)/reserrs.h \
$(KINCDIR)/ltypes.h \
$(KINCDIR)/except.h \
$(PRIMINC)/u_pr_bkmsg.h \
$(CRSINC)/sqlerrs.h \
$(PDBINC)/systypes.th \
$(PRIMINC)/u_pr_bkmsg.th \
$(INFORMINC)/sqlca.h
если я бег «сделать установку», вот что я получил:
make: *** No rule to make target `/sqlca.h', needed by `libadard.a(a_getbkm.o)'. Stop.
Для целей тестирования , я добавил это правило в Makefile просто проверить значение этих переменных $ (INFORMINC):
PHONY: all
all: ; @echo $(INFORMINC)
И выход Corre кт:
[email protected] release>make all
/informix-rv02_1/incl/esql
я также проверил в каталоге "/ Informix-rv02_1/вкл/ESQL", файл sqlca.h есть. Так что пошло не так?
UPDATE:
переменных $ (INFORMINC) не определены в этом Makefile. Она определяется в файле Makerules сидит на корневом уровне, и что Makerules включен этим Makefile:
include ../../Makerules
UPDATE 2:
Проблема решена. Спасибо @Roland Illig за подсказку. В Makerules, INFORMINC определяется как:
INFORMIXDIR := $(MY_INFORMIXDIR)
INFORMIX := $(INFORMIXDIR)
INFORMINC := $(INFORMIX)/incl/esql
Я просто скопировал последней строки, где INFORMINC определяется и вставить его в Makefile. И это сработало. Я не уверен, полностью ли я понимаю причину этого, но это, безусловно, дает мне некоторый опыт для решения подобных проблем в будущем.
Переменная INFORMING определяется в файле Makerules, и этот файл включен в этот файл makefile в самом начале. Означает ли это, что определение задерживается? – user3242431
Когда элементы набора включены в начале, у меня нет идей. Как насчет запуска Make в режиме отладки? –
Как-то определение INFORMINC не было передано из Makerules в этот makefile правильно или вовремя. Мне нужно скопировать определение переменной и вставить ее в make-файл, чтобы она работала. – user3242431