我的Makefile.am创建了可执行文件main:" symplerTest"我想链接文件" geometry / source / * .o"。目前即时链接如下:
symplerTest_LDFLAGS = \
...
geometry/source/*.o
有效。但是现在在下一步中,我想仅在文件* .o存在时才链接。我试过这个:
if ("$(wildcard $(geometry/source/*.o))","")
symplerTest_LDFLAGS += geometry/source/*.o
endif
但是收到以下错误消息:
srcUnittest/Makefile.am:81: error: endif without if
srcUnittest/Makefile.am:79: warning: wildcard $(geometry/source/*.o: non-POSIX variable name
srcUnittest/Makefile.am:79: (probably a GNU make extension)
问题似乎在(" $(通配符$(几何/来源/ * .o))","")
谢谢!
答案 0 :(得分:0)
20 Conditionals上的Automake手册 强调:
Automake支持一种简单的条件。
这些条件与GNU Make中的条件不同。 Automake的 配置脚本在配置时检查条件,并影响 从Makefile.in到Makefile的转换。它们基于通过的选项 配置和配置已发现的有关主机系统的结果。 GNU Make条件在make时检查,并且基于变量 传递给make程序或在Makefile中定义。
if
根本不是Make指令。 ifeq
是一个有效的Make指令
参数可以是(arg1, arg2)
的形式。
ifeq (arg1, arg2)
表示要创建,如果 arg1
等于 arg2
。
表单(arg1, arg2)
的参数对Automake指令if
无效。
Automake if
指令的有效参数是Automake条件名称,
e.g。
if DEBUG
表示,对于Automake,如果 DEBUG
指定的条件为真 - 其中
DEBUG
是您之前通过方式创建的条件名称
的AM_CONDITIONAL
宏。
请参阅链接文档。