IMHO cara terbaik adalah mengatur PCH untuk keseluruhan proyek, seperti yang disarankan martjno, dikombinasikan dengan kemampuan mengabaikan PCH untuk beberapa sumber jika diperlukan (misalnya sumber yang dihasilkan):
# set PCH for VS project
function(SET_TARGET_PRECOMPILED_HEADER Target PrecompiledHeader PrecompiledSource)
if(MSVC)
SET_TARGET_PROPERTIES(${Target} PROPERTIES COMPILE_FLAGS "/Yu${PrecompiledHeader}")
set_source_files_properties(${PrecompiledSource} PROPERTIES COMPILE_FLAGS "/Yc${PrecompiledHeader}")
endif(MSVC)
endfunction(SET_TARGET_PRECOMPILED_HEADER)
# ignore PCH for a specified list of files
function(IGNORE_PRECOMPILED_HEADER SourcesVar)
if(MSVC)
set_source_files_properties(${${SourcesVar}} PROPERTIES COMPILE_FLAGS "/Y-")
endif(MSVC)
endfunction(IGNORE_PRECOMPILED_HEADER)
Jadi, jika Anda memiliki beberapa target MY_TARGET, dan daftar sumber yang dihasilkan IGNORE_PCH_SRC_LIST Anda cukup melakukan:
SET_TARGET_PRECOMPILED_HEADER(MY_TARGET stdafx.h stdafx.cpp)
IGNORE_PRECOMPILED_HEADER(IGNORE_PCH_SRC_LIST)
Pendekatan ini diuji dan bekerja dengan sempurna.