Я застрял со странным переменным расширением. Позволь мне объяснить.
У меня есть проект, использующий 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.