CMake と Visual Studio を併用する際、特定の警告を無視するには /wd
オプションを指定します。
次の例では、通常 x
の初期化に関する警告が出力されます。
#include <stdio.h>
int main(void)
{
int x;
printf("%d\n", x);
return 0;
}
1>------ すべてのリビルド開始: プロジェクト:ZERO_CHECK, 構成: Debug x64 ------
1>Checking Build System
1>CMake does not need to re-run because /path/to/directory/CMakeFiles/generate.stamp is up-to-date.
2>------ すべてのリビルド開始: プロジェクト:Sample, 構成: Debug x64 ------
2>Building Custom Rule /path/to/directory/CMakeLists.txt
2>CMake does not need to re-run because /path/to/directory/CMakeFiles/generate.stamp is up-to-date.
2>sample.cpp
2>/path/to/directory/sample.cpp(6): warning C4700: 初期化されていないローカル変数 'x' が使用されます
2>Sample.vcxproj -> /path/to/directory/Debug/Sample.exe
2>Sample.vcxproj -> /path/to/directory/Debug/Sample.pdb (Full PDB)
2>プロジェクト "Sample.vcxproj" のビルドが終了しました。
3>------ [すべてリビルド] のスキップ: プロジェクト:ALL_BUILD, 構成: Debug x64 ------
3>プロジェクトはこのソリューション構成に対してビルドするように選択されていません。
========== すべてリビルド: 2 正常終了、0 失敗、1 スキップ ==========
警告の無効化
上記のコードを CMake
でプロジェクト化する際、add_compile_options
コマンドで /wd
オプションを指定すると特定の警告を無視することができます。
cmake_minimum_required(VERSION 3.12)
project(Sample)
add_compile_options(/wd4700)
add_executable(Sample sample.cpp)
1>------ すべてのリビルド開始: プロジェクト:ZERO_CHECK, 構成: Debug x64 ------
1>Checking Build System
1>CMake does not need to re-run because /path/to/directory/CMakeFiles/generate.stamp is up-to-date.
2>------ すべてのリビルド開始: プロジェクト:Sample, 構成: Debug x64 ------
2>Building Custom Rule /path/to/directory/CMakeLists.txt
2>CMake does not need to re-run because /path/to/directory/CMakeFiles/generate.stamp is up-to-date.
2>sample.cpp
2>Sample.vcxproj -> /path/to/directory/Debug/Sample.exe
2>Sample.vcxproj -> /path/to/directory/Debug/Sample.pdb (Full PDB)
3>------ [すべてリビルド] のスキップ: プロジェクト:ALL_BUILD, 構成: Debug x64 ------
3>プロジェクトはこのソリューション構成に対してビルドするように選択されていません。
========== すべてリビルド: 2 正常終了、0 失敗、1 スキップ ==========
参考資料
-
CMake
https://cmake.org/ -
CMake を使ったクロスプラットフォーム開発環境
https://engineering.linecorp.com/ja/blog/detail/103 -
コンパイラの警告 (レベル 1 およびレベル 4) C4700
https://msdn.microsoft.com/ja-jp/library/axhfhh6x.aspx -
warning
https://msdn.microsoft.com/ja-jp/library/2c8f766e.aspx