在 automake 中转义程序名称

And*_*ner 0 automake

如何在 GNU automake 中转义程序名称?例如,以下工作:

lib_LTLIBRARIES = libc.la

libc_la_SOURCES = source.cc
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试在程序名称上使用符号“加号”(+),如下所示:

lib_LTLIBRARIES = libc++.la

libc++_la_SOURCES = source.cc
Run Code Online (Sandbox Code Playgroud)

Make 将回应:

make[1]: *** No rule to make target 'libc++.c', needed by 'libc++.lo'.  Stop.
Run Code Online (Sandbox Code Playgroud)

似乎没有找到 SOURCES 变量。我尝试在加号前面加上美元 ($)、反斜杠 (\) 和双反斜杠 (\\),但没有成功。

uml*_*ute 5

automake 将简单地用下划线替换所有奇怪的字符_,以生成变量名称。因此,要libc++.la在变量名称中引用您的库,请使用libc___la前缀(两 (2) 个下划线代表+字符,另一个 (1) 下划线代表.字符)。

Makefile.am因此,您的代码段将如下所示:

lib_LTLIBRARIES = libc++.la
libc___la_SOURCES = source.cc
Run Code Online (Sandbox Code Playgroud)