2

autotools を使用するプロジェクトがあります。プロジェクトをコンパイルするときに -D_GNU_SOURCE を追加したい。これを Makefile または configure スクリプトにハックすることもできますが、リリース前に新しいスクリプトを生成すると、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_SOURCEただし、これは に追加されないことに注意してくださいCFLAGS-構成ヘッダー ( で設定AC_CONFIG_HEADER) を使用している場合は、それに の定義が追加され_GNU_SOURCEます。そうでない場合は、 に追加さ-D_GNU_SOURCE=1れます。メイクファイル。DEFSCFLAGS

構成ヘッダーを使用している場合 (重要な autoconf プロジェクトでは、おそらく使用する必要があります)、システム ヘッダーの前に含める必要があります。

于 2013-07-22T22:06:01.080 に答える