オプション「--address-model = 32,64」は32と64の両方のライブラリをビルドしますか、それとも2つの別々のビルドを行う必要がありますか?
実行:
b2 address-model=32,64
または.
b2 address-model=32,64,32_64
最初のケースでは、ツールセットとプラットフォームのサポートに応じて、32ビットと64ビットの両方のターゲットを処理および生成します。そして32、64、および32 + 64ユニバーサルターゲット(おそらくdarwin
ツールセットを使用するOSXでのみ。そして「機能する」とは、darwin
toolset。したがって、構文が間違っていると思います。つまり、「-name = values」はオプションではないので使用しないでください。代わりに、「name = values」を使用してください。
ドキュメントは次のように述べています(私の強調):
「どちらか 32ビットまたは 64ビットのコード生成を明示的に要求します。」
「1つ以上」または「少なくとも1つ」を表示していないことに注意してください。それは...またはを意味します。つまり、XORを読んで、経験が一致することを意味します。それ。
許可された値のリストのコンマは、許可された値のセットの2つの項目を区切るためのものです。
私は次のことをしてしまいました:
どちらも、stageまたはinstallationフォルダーなど、boostがすでにチェックしている検索パスにあることが好ましい。
次に、ヘッダーの下に検索パスがアセンブルされた直後にこのブロックを追加しました(FindBoost.cmake編集するファイルはshare/cmake-3.1/Modules /フォルダーの下にありますCMakeインストールフォルダー)
ブーストライブラリの検索を開始する
...
if(Boost_LIBRARY_DIR)
...
endif()
#generate 32 and 64 bit paths
if(WIN32)
if(CMAKE_CL_64)
#message("Finding BOOST on windows platform (64 bit)")
SET(BOOST_libdir_suffix_gen "64")
else()
#message("Finding BOOST on windows platform (32 bit)")
SET(BOOST_libdir_suffix_gen "32")
endif()
list(APPEND _boost_LIBRARY_SEARCH_DIRS_PLATFORMS "")
foreach(SEARCH_DIR_NOPLATFORM ${_boost_LIBRARY_SEARCH_DIRS})
list(APPEND _boost_LIBRARY_SEARCH_DIRS_PLATFORMS ${SEARCH_DIR_NOPLATFORM}${BOOST_libdir_suffix_gen})
endforeach()
foreach(SEARCH_DIR_PLATFORM ${_boost_LIBRARY_SEARCH_DIRS_PLATFORMS})
list (APPEND _boost_LIBRARY_SEARCH_DIRS ${SEARCH_DIR_PLATFORM})
endforeach()
else()
# no generation required (?)
endif()
既存のすべてのlibディレクトリーを、64ビットまたは32ビットの拡張タグが付いたライブラリーのブースト検索パスに再度追加します。これにより、リンクする正しいターゲットライブラリが選択され、ブースト依存パスをリセットせずに、32または64ターゲットビルド用の他の依存cmakeライブラリ(CGALなど)を安全に再生成できます。