CMakeは,各種プラットフォーム向けにビルド環境を生成することができる,マルチプラットフォーム向けのC/C++/C#/Objective-Cによるオープンソースにとって無くてはならないツールです.
ですが,マルチプラットフォームではなく,単純にプロジェクトをテキストベースで管理したい場合にもCMakeは非常に便利です.バージョン管理をしている場合に,Visual Studioのプロジェクト設定の変更を差分から読み取るのは大変ですが,CMakeであれば,変更した行は分かりやすいことでしょう.
しかし,ここで問題になるのが,プリコンパイル済みヘッダを使いたい場合です.色々調べてみると,そのための機能をCMakeに提供するためのオープンソースなども公開されていますが,Visual Studioに限るのであれば,次のようにシンプルに書けます.
# プリコンパイル済みヘッダの使用(/Yu)を全体に設定
set(CMAKE_CXX_FLAGS "/Yu")
# CMakeの場合,Debugで_DEBUGを定義していないので定義しておく
set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG")
add_executable(App stdafx.h stdafx.cpp main.cpp)
# stdafx.cppのみプリコンパイル済みヘッダの作成(/Yc)を設定する
set_source_files_properties(stdafx.cpp PROPERTIES COMPILE_FLAGS "/Yc")
そう,CMAKE_CXX_FLAGSとstdafx.cppへのCOMPILE_FLAGSプロパティの設定だけでプリコンパイル済みヘッダが使えるのです.
あまりアレコレ余計なものを追加したくない,という場合,この設定を利用してみてください.
2020/07/21追記
CMake 3.16から,target_precompile_headersが追加されたので,より簡単に書けるようになりました.
add_executable(App main.cpp)
target_precompile_headers(App header1.h header2.h)