在 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
如何在 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