自动工具: Makefile.am:如果文件存在,则链接
autotools: Makefile.am: link if file exists
我的 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)",")
谢谢!
您将 Automake 指令if
与 Make 混淆了 指令ifeq
,
20 个条件的自动制作手册 强调:
自动制作支持简单类型的条件。
这些条件与 GNU Make 中的条件不同。自动制作 条件在配置时由配置脚本检查,并影响 从 Makefile.in 到Makefile的翻译。它们基于传递的选项 配置和配置已发现的有关主机系统的结果。 GNU Make 条件在 make 时被检查,并且基于变量 传递给 make 程序或在生成文件中定义。
if
根本不是 Make 指令。ifeq
是有效的 Make 指令 参数的形式可以是(arg1, arg2)
。
ifeq (arg1, arg2)
表示,如果arg1
等于arg2
,则为制造。
(arg1, arg2)
格式的参数对于 Automake 指令if
无效。 Automakeif
指令的有效参数是 Automake 条件名称, 例如
if DEBUG
表示,如果DEBUG
指定的条件为真,则自动生成 - 其中DEBUG
是之前通过 Means 创建的条件名称 的AM_CONDITIONAL
宏观。
请参阅链接的文档。
相关文章:
- 有了gcc,是否可以链接库,但前提是它存在
- 如果同时存在共享库和动态库,则链接器将首选哪个库?
- CMake 生成的程序无法在 Windows 上链接:尝试链接到不存在的文件
- boost::存在符号链接不取消引用
- libGL确实存在,但链接器找不到它 - Qt 4.8.7,CentOS 7.5
- C++/CLR 托管单元测试存在链接器错误
- 自动工具: Makefile.am:如果文件存在,则链接
- 存在内存泄漏问题的链接列表
- 链接g729库(也存在库和符号)
- 是否存在链接类问题?我不知道发生了什么事
- PowrProf.h的CallNtPowerInformation存在链接错误的新项目
- 类模板的成员函数模板找不到定义,尽管存在显式实例化。不链接
- 尽管存在符号链接,但 ld 无法加载库
- .so中存在的符号已编译.o引用了它,但链接失败
- VS 2008:链接命令包括我没有要求且不存在的库
- C++/VS 2012-多项目解决方案:一个项目中存在链接器错误,但另一个项目没有
- 删除后持久存在链接列表项
- 静态元组类成员的 constexpr 存在链接器错误
- Visual Studio 2010-独立函数中存在链接器错误
- 类模板中存在链接错误