我想知道 AM_LDFLAGS 和 LDFLAGS 之间有什么区别,因为我遇到了错误
error: AM_LDFLAGS must be set with '=' before using '+='
当我在 foreach 循环中使用 AM_LDFLAGS 时
我的make文件代码如下所示:
program_INCLUDE_DIRS := /usr/bin/PR__bin
program_LIBRARY_DIRS := /usr/lib/PR__lib
CFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir))
AM_LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
_我想知道AM_LDFLAGS和LDFLAGS有什么区别_
LDFLAGS
是从Autoconf继承的变量,AM_LDFLAGS
是automake定义的变量。
根据汽车制造商手册页 http://www.gnu.org/software/automake/manual/html_node/Program-Variables.html,
这是变量Makefile.am
作者可以用来传递额外的链接器标志。在某些情况下,不使用此选项,而是优先于每个可执行文件(或每个库)_LDFLAGS
.
但是,关于错误,根据提供的信息here https://groups.google.com/forum/#!topic/ode-users/yixmidOpyoQ,看起来像是变量使用上的问题。 Automake 期望该变量必须设置为some值之前可以appended.
解决此问题的正确方法与中提到的方法相同其他答案 https://stackoverflow.com/a/27658342/2173917由 Etan Reisner 提供,简单地说set the AM_LDFLAGS
明确地在循环之前,类似
AM_LDFLAGS = // which "sets" the AM_LDFLAGS
然后做
AM_LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)