Visual StudioでランタイムライブラリをCMakeから設定する方法については多くの記事がありますが、私の場合はVisual Studioが自分の設定を無視しているようです。一見、Visual Studioはcmakeで設定されたランタイムライブラリを無視します
私は/MD
でgoogle-mockを作りたいと思います。これはプロジェクトのデフォルト設定です。で構築された新鮮なビルドディレクトリで
cmake -G "Visual Studio 12 2013" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=C:\Users\mrussell\workspace\opal2\o2win32\Libs\gtest\"1.7.0" -DCMAKE_CXX_FLAGS_RELEASE="/MD /O2 /Ob2 /D NDEBUG" ../googlemock
すべての私のcmakeの変数は正しい
、私が構築するために行く、のいずれかのコマンドラインを介して(Iように見えます私はlinux ..に使用されています)、またはVisual Studioからは/MT
フラグを使います。
私のビルドコマンド(32ビットをターゲット):
はcall "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"
msbuild /m:4 /property:Configuration=%build_type% ALL_BUILD.vcxproj
出力:
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IC:\Users\mrussell\workspace\opal2\o2win32\Libs\gtest\g
test\include /IC:\Users\mrussell\workspace\opal2\o2win32\Libs\gtest\gtest /Zi /nologo /W4 /WX /O2 /Ob2 /Oy- /D WIN32 /D _WIND
OWS /D NDEBUG /D WIN32 /D _WINDOWS /D _UNICODE /D UNICODE /D WIN32 /D _WIN32 /D STRICT /D WIN32_LEAN_AND_MEAN /D GTEST_HAS_PT
HREAD=0 /D _HAS_EXCEPTIONS=1 /D "CMAKE_INTDIR=\"Release\"" /D _UNICODE /D UNICODE /Gm- /EHsc /MT /GS /fp:precise /Zc:wchar_t
/Zc:forScope /GR /Fo"gtest.dir\Release\\" /Fd"gtest.dir\Release\vc120.pdb" /Gd /TP /wd4127 /wd4251 /wd4275 /analyze- /errorRe
port:queue -J "C:\Users\mrussell\workspace\opal2\o2win32\Libs\gtest\gtest\src\gtest-all.cc"
(。そこで/MT
隠れに注意してください)
をVisual Studioで、私は、ソリューションを開きますリリースタイプRelease
を選択し、いずれのターゲットでもgtest
、Properties
- >Configuration Properties
- >C/C++
->Code Generation
の場合、Runtime Library
は/MT
に設定され、Cmakeファイルでは/MD
に設定されていません。
同じことは、私はGoogleのテスト(1.7.0)
を構築しようとした場合、私はちょうどこれらを設定する方法を理解しないでくださいどうなりますか?またはVisual Studioを手動で開き、設定せずにVisual Studioに正しいフラグを使用させる方法がありますか?
[CMakeを使用してGTestビルド/ MDdを(デフォルトで/ MTdの代わりに)作成する方法](http://stackoverflow.com/questions/12540970/how-to-make-gtest-build- – Tsyvarev
解決策の1つ(選択されたものではない)が実際に私の問題を解決すると思うが、それが選択されたものではないので、私は躊躇している「この解決済みの問題」ボタンをクリックします。 @sakraのソリューション(http://stackoverflow.com/a/12546288/1861346と一致します)を試してみましょう。ありがとう! – Matt