リストしたフラグについては、次を CMakeLists.txt に追加します。
if(MSVC)
# StringPooling: true == /GF false == /GF-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GF")
# RuntimeLibrary
# 0 (MultiThreaded) == /MT
# 1 (MultiThreadedDebug) == /MTd
# 2 (MultiThreadedDLL) == /MD
# 3 (MultiThreadedDebugDLL) == /MDd
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
# TreatWChar_tAsBuiltInType: true == /Zc:wchar_t false == /Zc:wchar_t-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:wchar_t")
# WarningLevel: /W<level 0 to 4> or /Wall
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
# Detect64BitPortabilityProblems: /Wp64 - Deprecated since VC++ 2010
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Wp64")
endif()
必要に応じて、これらを 1 回の呼び出しでグループ化できます。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GF /Zc:wchar_t /W3 /Wp64")
単一のターゲット (たとえば、MyTestExe
) にフラグを追加するだけでよい場合は、次のようにできます。
set_target_properties(MyTestExe PROPERTIES COMPILE_FLAGS "/GF- /W2")
このターゲット固有のメソッドを介して設定されたオプションは、一般CMAKE_CXX_FLAGS
変数内の競合するものをオーバーライドします。
これらのコマンドの詳細については、次を実行してください。
cmake --help-variable "CMAKE_<LANG>_FLAGS_DEBUG"
cmake --help-command set_target_properties
cmake --help-property COMPILE_FLAGS
Visual Studio コンパイラ オプションは、ここに一覧表示されています。