Sar*_*ra 3 c flags automake makefile
我想知道AM_LDFLAGS和LDFLAGS之间有什么区别,因为我遇到了一个错误
error: AM_LDFLAGS must be set with '=' before using '+='
Run Code Online (Sandbox Code Playgroud)
当我在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))
Run Code Online (Sandbox Code Playgroud)
_我想知道AM_LDFLAGS和LDFLAGS_之间有什么区别
LDFLAGS是从Autoconf继承的变量,AM_LDFLAGS是由automake定义的变量.
根据automake 手册页,
这是
Makefile.am作者可用于传递其他链接器标志的变量.在某些情况下,这不会被使用,优先于每个可执行文件(或每个库)_LDFLAGS.
但是,根据此处提供的信息重新编写错误,它看起来像是变量使用的问题.Automake期望变量必须先设置为某个值才能追加.
正确的方法来解决,这将是一样的,在提到的另一个答案由伊坦赖斯纳提供,只需设置了AM_LDFLAGS明确的循环之前,像
AM_LDFLAGS = // which "sets" the AM_LDFLAGS
Run Code Online (Sandbox Code Playgroud)
然后呢
AM_LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
Run Code Online (Sandbox Code Playgroud)