Boost編譯的庫對於x86和x64具有相同的名稱。我的項目使用升壓,我想它會自動鏈接通過CMake編譯針對x64或x86目標時,正確的Boost庫CMake find在同一臺機器上同時升級x86和x64
我CMakeFiles.txt採用簡單的代碼
find_package(Boost REQUIRED
COMPONENTS
coroutine context thread filesystem program_options system
)
我升壓是建立與(MSVC2015)
b2 address-model=32 --build-type=minimal stage --stagedir stage
b2 address-model=64 --build-type=minimal stage --stagedir stage64
我也試圖「安裝」的目標,並把推動構建成單獨的文件夾
我建立我的項目,(視窗)
md build32
cd build32
cmake .. -G"Visual Studio 14 2015"
cmake --build .
cd ..
和
md build
cb build
cmake .. -G"Visual Studio 14 2015 Win64"
cmake --build .
cd ..
x86的目標是打造全成,因爲它的庫(升壓)正在鋪設中是衆所周知的CMake的FindBoost模塊
但64目標着「舞臺」文件夾因爲FindBoost使用Boost的x86庫進行構建過程,並且不嘗試使用來自「stage64」的庫,並出現此錯誤:
D:\lib\boost_1_61_0\stage\lib\libboost_coroutine-vc140-mt-gd-1_61.lib : warning LNK4272: library machine type 'X86' conflicts with target machine type 'x64'
我的目標是在「CMake的」以exlude任何額外PARAMS呼籲建立我的項目,我希望它自動爲x86或x64取決於正確的升壓庫我使用
如何在其上的CMake的-G PARAM我可以更改我的CMakeFiles.txt以使其自動找到正確的提升庫嗎?
加速版本 - 1.61,MSVC 2015年,CMake的 - 3.6.2(最新的,並且具有約1.61提升知識),Windows 7的64位
當爲x86_64構建項目時,您可以將CMake變量'BOOST_ROOT'設置爲approprite目錄('D:\ lib \ boost_1_61_0 \ stage64')。 – Tsyvarev
@Tsyvarev,不幸的是,boost階段目錄不包含僅包含libs。所以我需要將BOOST_ROOT設置爲d:\ lib \ boost_1_61_0。但是,即使我將-DBOOST_LIBRARYDIR添加到d:\ lib \ boost_1_61_0 \ stage64 \ lib - 當我構建x64時,仍然使用不正確的d:\ lib \ boost_1_61_0 \ stage(x86)作爲庫。它以某種方式硬編碼在CMake的findboost模塊內 – Evgeniy
您可以嘗試手動將x86 libs放在'BOOST_ROOT/lib32-msvc-14.0 /'和x64的'BOOST_ROOT/lib64-msvc-14.0 /'中並再次檢查嗎? – llonesmiz