FreeBSD ホストでコンパイルするように適応させている C++ autoconf マネージド プロジェクトがあります。元のシステムは Linux だったので、AM_CONDITIONAL を 1 つ作成して、ビルドしているホストを識別し、コードをシステム固有のファイルに分けました。
configure.ac
AC_CANONICAL_HOST
AM_CONDITIONAL([IS_FREEBSD],false)
ケース $host in
*自由*)
AC_DEFINE([IS_FREEBSD],[1],[FreeBSD ホスト])
AM_CONDITIONAL([IS_FREEBSD],真)
BP_ADD_LDFLAG([-L/usr/local/lib])
;;
エサック
Makefile.am
lib_LTLIBRARIES=mylib.la
mylib_la_SOURCES=a.cpp \
b.cpp
IS_FREEBSD の場合
mylib_la_SOURCES+=freebsd/c.cpp
そうしないと
mylib_la_SOURCES+=linux/c.cpp
終了
automake を実行すると、次のようなメッセージで失敗します。
Makefile.am: `linux/c.cpp' と `freebsd/c.cpp' によって作成されたオブジェクト `c.lo'
Makefile.in ビルド プロセスでもこの条件を尊重するように automake を構成する方法についてのアイデアはありますか?
ファイルの名前が異なる場合、これは機能しますが、それは C++ コードであり、ファイル名をクラス名と同じに保とうとしています。
前もって感謝します!