3

我正在 Windows 上使用 MSys 和 Mingw 构建一个 dll。项目的源代码只提供了一个 autogen.sh、configure.ac 和 makefile.am。要生成 makefile,请运行 autogen.sh,然后运行 ​​./configure。然后我去手动添加-no-undefined到makefile中的LDFLAGS。这并不理想,在生成 makefile 期间,应该正确设置此 LDFLAGS。

我必须在某个地方更改配置文件,以便在生成生成文件时正确设置 LDFLAGS。

我怎么做?

4

2 回答 2

4

您应该可以将其设置为Makefile.am. 如果您的库声明如下所示:

lib_LTLIBRARIES = libfoo.la
libfoo_la_SOURCES = foo.c

你会添加这一行:

libfoo_la_LDFLAGS = -no-undefined
于 2013-03-02T03:14:50.867 回答
3

作为杰克凯利答案的替代方案,您可以AM_LDFLAGS在适用的 Makefile.am 中定义,例如,

AM_LDFLAGS = -no-undefined

将标志传递给所有库规则的链接器(如果需要,以避免重复)。


请注意,Autom4ke 手册指出,

在某些情况下,它不使用,而不是每个可执行文件(或每个库)_LDFLAGS。

这里的措辞不是很清楚,但是,关于 libtool 标志的部分指出,

如果未定义“library_LIBTOOLFLAGS”,则使用变量 AM_LIBTOOLFLAGS。

Calcote 在他的Autotools中明确指出,

每个产品变量的存在覆盖了 Automake 对每个 makefile 变量的使用,因此您需要将每个 makefile 变量添加到每个产品变量中,以使每个 makefile 变量影响该产品 [... ]。

该声明附有示例,

AM_CFLAGS = ... some flags ...
...
prog1_CFLAGS = ... more flags ... $(AM_CFLAGS)
...
于 2019-08-17T18:28:57.823 回答