簡體   English   中英

Makefile.am中變量的錯誤擴展

[英]Wrong expansion of variable in Makefile.am

我陷入了奇怪的變量擴展。 讓我解釋。

我有一個使用automake的項目,該項目由configure.acMakefile.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM