2

我有一个使用自动工具的项目。我想在编译项目时添加 -D_GNU_SOURCE。我可以将它破解到 Makefile 或配置脚本中,但是当我在发布前生成新的时,它们会被 configure.am 和 Makefile.am 覆盖。

定义这个的正确位置在哪里,正确的语法是什么,是否有我应该使用的宏?

4

1 回答 1

1

您可以通过在文件CFLAGS中添加这样的行来进行修改configure.ac

CFLAGS="$CFLAGS -D_GNU_SOURCE"

然后重新生成您的配置脚本(这会添加到现有的CFLAGS而不是替换它,这是您应该做的 - 因此用户可以CFLAGS在编译时指定他们自己的选项并且您的脚本不会覆盖它们)。

但是,对于 的特定情况_GNU_SOURCE,您应该改用内置的 autoconf 宏:

AC_GNU_SOURCE

将它放在configure.ac文件的早期,在调用 C 编译器的任何规则之前。请注意,这不会添加-D_GNU_SOURCECFLAGS,但是 - 如果您使用的是配置标头(使用 设置AC_CONFIG_HEADER),那么它会为其添加一个定义_GNU_SOURCE,如果您不是,那么它会添加-D_GNU_SOURCE=1DEFS,您可以CFLAGS在您的生成文件。

如果您使用的是配置标头(对于任何重要的 autoconf 项目,您可能应该使用),那么它应该包含在任何系统标头之前。

于 2013-07-22T22:06:01.080 回答