Я застрял со странным расширением переменной.Позвольте мне объяснить.
У меня есть проект, который использует automake, составленный из configure.ac
, Makefile.am
.В основном, в Makefile.am
я делаю:
ARCH = $(shell ${CURDIR}/./arch.sh)
...
noinst_HEADERS = license/${ARCH}/lchecker.h
proj_SOURCES = main.c license/${ARCH}/lchecker.c
proj_LDFLAGS = -avoid-version -Llicense/${ARCH}
. / Arch делает просто uname -m
для определения необходимой архитектуры, потому что я должен ввести правильный каталог.
Когда я запускаю сборку, у меня появляется эта ошибка:
Makefile:622: license/x86_64/.deps/lchecker.Po: No such file or directory
make[1]: *** No rule to make target 'license/x86_64/.deps/lchecker.Po'. Stop.
, и если я вхожу в каталог license
, я замечаю новый созданный каталог с именем ${ARCH}/
, где я нахожу отсутствующий .deps
из license/x86_64
.
Я почти уверен, что это некорректная проблема расширения;Я пробовал много способов, но потерпел неудачу.
Может кто-нибудь объяснить мне правильный способ сделать это?Читая по сети, я вижу, что Makefile.am
имеет синтаксис, отличный от Makefile
.
ОБНОВЛЕНИЕ:
Я попытался добавить некоторые изменения, чтобы увидеть, если переменнаяправильно определено:
AC_DEFINE([ARCH], ["$ARCH"], [arch check])
echo ARCH = "$ARCH"
printf x86_64
, поэтому переменная определена в файле configure.ac, но расширение снова неверно в Makefile.am.