我正在Windows上使用MSys和Mingw构建一个dll。项目源只提供autogen.sh,configure.ac和makefile.am。
要生成makefile,请运行autogen.sh然后运行./configure。然后我去手动将-no-undefined
添加到makefile中的LDFLAGS。这不是理想的,在生成makefile期间,应该正确设置LDFLAGS。
某处我必须更改配置文件,以便在生成makefile时正确设置LDFLAGS。
我该怎么做?
答案 0 :(得分:2)
您应该可以在Makefile.am
中进行设置。如果您的库声明看起来像这样:
lib_LTLIBRARIES = libfoo.la
libfoo_la_SOURCES = foo.c
你要加上这一行:
libfoo_la_LDFLAGS = -no-undefined
答案 1 :(得分:1)
作为Jack Kelly's answer的替代方法,您可以在适用的Makefile.am中定义AM_LDFLAGS
,例如
AM_LDFLAGS = -no-undefined
将所有库规则的标志传递给链接器(如果需要,请避免重复)。
请注意,Autom4ke manual指出
在某些情况下,它不使用,而不是按可执行文件(或按库)_LDFLAGS。
这里的措词不是很清楚,但是section on libtool flags状态
如果未定义“ library_LIBTOOLFLAGS”,则使用变量AM_LIBTOOLFLAGS。
Calcote在他的Autotools中明确指出,
每个产品变量的存在会覆盖Automake对每个makefile变量的使用,因此您需要在每个产品变量中添加一个每个makefile变量,以使每个makefile变量影响该产品[ ...]。
该语句附带示例,
AM_CFLAGS = ... some flags ...
...
prog1_CFLAGS = ... more flags ... $(AM_CFLAGS)
...