autotools を使用するプロジェクトがあります。プロジェクトをコンパイルするときに -D_GNU_SOURCE を追加したい。これを Makefile または configure スクリプトにハックすることもできますが、リリース前に新しいスクリプトを生成すると、configure.am と Makefile.am によって上書きされます。
これを定義する正しい場所はどこですか?正しい構文は何ですか?使用すべきマクロはありますか?
次のような行をファイル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
れます。メイクファイル。DEFS
CFLAGS
構成ヘッダーを使用している場合 (重要な autoconf プロジェクトでは、おそらく使用する必要があります)、システム ヘッダーの前に含める必要があります。