[英]Wrong expansion of variable in Makefile.am
我陷入了奇怪的變量擴展。 讓我解釋。
我有一個使用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
缺少的.deps
。
我很確定這是一個錯誤的擴展問題; 我已經嘗試了很多方法,但是失敗了。
誰能向我解釋正確的方法? 周圍的凈閱讀中,我看到Makefile.am
具有從不同的語法Makefile
。
更新:
我嘗試添加一些更改,以查看是否正確定義了變量:
AC_DEFINE([ARCH], ["$ARCH"], [arch check])
echo ARCH = "$ARCH"
printf x86_64
因此在configure.ac中定義了變量,但在Makefile.am中擴展名又不正確。
在您的configure.ac
,使用宏AC_SUBST(varname,[value])
在每個生成的makefile中創建一個make-variable varname
,它將具有在生成該makefile時對該value
進行求value
。 value
可以是shell擴展。 所以例如
AC_SUBST(ARCH,[`./arch.sh`])
在configure.ac
中將在每個makefile中創建分配:
ARCH = x86_64
假設x86_64
是build目錄中./configure
-time的./arch.sh
的標准輸出。 然后,您可以假定在Makefile.am
已分配了此變量,並編寫如下內容:
noinst_HEADERS = license/${ARCH}/lchecker.h
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.