在 automake 中转义程序名称

Escape program names in automake

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

lib_LTLIBRARIES = libc.la

libc_la_SOURCES = source.cc

但是,如果我尝试在程序名称中使用符号 'plus' (+),如下所示:

lib_LTLIBRARIES = libc++.la

libc++_la_SOURCES = source.cc

Make 将回应:

make[1]: *** No rule to make target 'libc++.c', needed by 'libc++.lo'.  Stop.

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

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

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

lib_LTLIBRARIES = libc++.la
libc___la_SOURCES = source.cc