C++ アプリケーションを VC++ から GCC (Cygwin を使用して Windows で実行) に移行中です。私の最初の問題は、Boost ライブラリをビルドできないことです。
たとえば、VC++ で Boost.Exception をビルドするには、次のように記述します。
b2 --with-exception variant=debug,release link=static runtime-link=static
そして、stage\lib ディレクトリにファイル libboost_exception-vc100-mt-s-1_51.lib と libboost_exception-vc100-mt-sgd-1_51.lib を取得します。
ただし、Cygwin 端末から GCC を使用して同じことを試みると、エラーが発生します。このようにデバッグのみ(またはリリースのみ)をビルドすることが機能することがわかりました:
./b2 --with-exception variant=debug link=static runtime-link=static
両方のケース (デバッグとリリース) で、stage\lib ディレクトリに libboost_exception.a が作成されます。そのため、名前の競合があるようです (デバッグ バリアントとリリース バリアントで同じ名前)。これはブースト ビルド システムのバグですか、それとも何か間違っていますか?
編集:
の出力
./b2 --with-exception variant=debug,release link=static runtime-link=static
は:
Boost C++ ライブラリの構築。
/cygdrive/c/boost_1_51_0/tools/build/v2/build/virtual-target.jam:1079: モジュール virtual-target の virtual-target.register-actual-name 内
エラー: 実際のターゲットの名前が重複しています: libboost_exception.a
エラー: 以前の仮想ターゲット { common%common.copy-libboost_exception.a.STATIC_LIB { gcc%gcc.archive-libboost_exception.a.STATIC_LIB { gcc%gcc.compile.c++-clone_current_exception_non_intrusive.o.OBJ { clone_current_exception_non_intrusive.cpp.CPP } } } }
エラー: ./stage-proper から作成されました エラー: 別の仮想ターゲット { common%common.copy-libboost_exception.a.STATIC_LIB { gcc%gcc.archive-libboost_exception.a.STATIC_LIB { gcc%gcc.compile.c++-clone_current_exception_non_intrusive.o .OBJ { clone_current_exception_non_intrusive.cpp.CPP } } } }
エラー: ./stage-proper から作成されました
エラー: 追加されたプロパティ: オフ NDEBUG フル スピード オフ リリース
エラー: 削除されたプロパティ: on off off on debug
/cygdrive/c/boost_1_51_0/tools/build/v2/build/virtual-target.jam:490: モジュール object(file-target)@1014 からの actualize-no-scanner 内
/cygdrive/c/boost_1_51_0/tools/build/v2/build/virtual-target.jam:135: in object(file-target)@1014.actualize from module object(file-target)@1014
/cygdrive/c/boost_1_51_0/tools/build/v2/build-system.jam:749: モジュール build-system からロード中
/cygdrive/c/boost_1_51_0/tools/build/v2/kernel/modules.jam:283: モジュール モジュールからインポート中
/cygdrive/c/boost_1_51_0/tools/build/v2/kernel/bootstrap.jam:142: モジュールからのブーストビルド内
/cygdrive/c/boost_1_51_0/boost-build.jam:17: モジュールからのモジュール スコープ内