1. ホーム
  2. c++

GNU autotools。デバッグ/リリースターゲット?

2023-09-08 15:18:20

質問

私はしばらくの間、これを探していました。私は現在、Eclipseベースの方法(makefileを使用)から来たオートツールに中規模のプログラムを変換しています。

私は常に、すべてのデバッグ シンボルおよび最適化なしの "debug" ビルドと、デバッグ シンボルおよび最高の最適化なしの "release" ビルドを持つことに慣れています。

今、私は autotools で何らかの方法でこれを再現しようとしており、そうすれば (おそらく) 以下のようなことができます。

./configure
make debug

どちらがデバッグシンボルを全て持ち、最適化をしないか、どこを。

./configure
make

リリース版(デフォルト)になります。

PS: --enable-debug flag/feature について読みましたが、私の現在の (単純な) セットアップでは、それを使用することは configure

どのように解決するのですか?

節を追加して configure.in または configure.ac ファイルを作成します。

AC_ARG_ENABLE(debug,
AS_HELP_STRING([--enable-debug],
               [enable debugging, default: no]),
[case "${enableval}" in
             yes) debug=true ;;
             no)  debug=false ;;
             *)   AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
esac],
[debug=false])

AM_CONDITIONAL(DEBUG, test x"$debug" = x"true")

では、あなたの Makefile.in または Makefile.am ;

if DEBUG
AM_CFLAGS = -g3 -O0
AM_CXXFLAGS = -g3 -O0
else
AM_CFLAGS = -O2
AM_CXXFLAGS = -O2
endif

ということは、いつ debug が有効な場合は {C/CXX}FLAGS を変更してデバッグ情報を有効にします。