-pthread
の可用性をテストし、フラグをCXXFLAGS
とLDFLAGS
の両方に設定しようとしています。 ax_pthread
は間違ったコンパイラを使用し、C++プロジェクトに間違ったフラグを設定するため、ax_pthread
は使用しません。 Significance of -pthread flag when compilingによれば、-pthread
が最も移植性が高いので、CXXFLAGS
とLDFLAGS
の両方に使用したいと考えています。[action-if-true]で複数のアクションを実行する方法
我々はconfigure.ac
に追加したスクリプトは次のとおりです。
./configure: line 16173: syntax error near unexpected token `&&'
./configure: line 16173: ` && AM_LDFLAGS="-pthread"'
autoreconf --warnings=all
がテストに関連した警告を生成しない:それは、その結果
AC_ARG_ENABLE(tls,
AS_HELP_STRING([--enable-tls], [enable thread storage (default is yes)]),
ac_enable_tls=$enableval,
ac_enable_tls=yes)
AM_CONDITIONAL(HAS_PTHREADS, test $ac_enable_tls = yes)
if test "$ac_enable_tls" = "yes"; then
SAVED_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="-pthread"
AC_MSG_CHECKING([for pthread support])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
[AC_MSG_RESULT([-pthread]) && AC_SUBST([AM_CXXFLAGS], ["-pthread"]) && AC_SUBST([AM_LDFLAGS], ["-pthread"])],
[AC_MSG_FAILURE(["--enable-tls=yes but pthreads are not available"])]
)
CXXFLAGS="$SAVED_CXXFLAGS"
fi
。
AC_COMPILE_IFELSE
と[action-if-true]
で3つのことをしようとしていると思います。 Autoconf AC_COMPILE_IFELSE
文書は状況をどのように処理するか教えてくれませんし、例を提供していません。私たちは、[action-if-true]
に3つのアクションを実行したい
:
- は、私が
[action-if-true]
で複数のアクションを実行するにはどうすればよいのメッセージpthread
AM_CXXFLAGS += -pthread
AM_LDFLAGS += -pthread
を印刷しますか?
ありがとうフロリアン。 * "&&シェル演算子を使う理由はわかりません" * - これは標準的なシェルのものです - ['&&'と '||'](https://unix.stackexchange.com/q/24684/56041)。私は[Autoconfのドキュメント](https://www.gnu.org/software/autoconf/manual/autoconf-2.66/html_node/Running-the-Compiler.html)が何をすべきか教えてくれないので、私はそれを使用しています。それは間違っている私を驚かさない:) – jww
* "それは非常にシェル変数を設定するだけの設定スクリプトでも一般的です..." * - あなたはこれの例がありますか?私もそれについて考えましたが、エクスポートされていないローカル変数を設定する方法がわかりませんでした。試したことが 'set foo = 1'のように設定に失敗しました。 – jww