我想知道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))
答案 0 :(得分:5)
_我想知道AM_LDFLAGS和LDFLAGS _
之间有什么区别
LDFLAGS
是从Autoconf继承的变量,AM_LDFLAGS
是由automake定义的变量。
根据automake manual page,
这是
Makefile.am
作者可用于传递其他链接器标志的变量。在某些情况下,这不会被使用,优先于每个可执行文件(或每个库)_LDFLAGS
。
但是,根据提供的信息here重新编写错误,它看起来像是变量使用的问题。 Automake希望变量必须设置为某些值才能追加。
解决这个问题的正确方法与Etan Reisner提供的other answer中提到的方法相同,只是在循环之前明确设置 AM_LDFLAGS
,类似于
AM_LDFLAGS = // which "sets" the AM_LDFLAGS
然后再做
AM_LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
答案 1 :(得分:1)
如果该错误抱怨它所说的是抱怨(并且我完全不确定它为什么/应该如此)那么我认为解决方案就像添加
一样简单AM_LDFLAGS =
作为使用+=
的foreach循环上方的行。
从GNU Automake手册的8.7 Variables used when building a program
部分:
AM_LDFLAGS
这是Makefile.am作者可用于传递其他链接器标志的变量。在某些情况下,这不会被使用,优先于每个可执行文件(或每个库)_LDFLAGS。