我试图弄清楚如何维护预编译头文件的依赖性。它包括STL
标头,一些boost
之类的第三方以及一些我们很少更改的基础结构标头。
我想到了这样的东西
SET(PCH_DIR ${CMAKE_CURRENT_BINARY_DIR})
SET(PCH_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/../include/server/server.h)
SET(PCH_DST server.h.gch)
ADD_CUSTOM_TARGET(serverPCH DEPENDS ${PCH_DST})
ADD_CUSTOM_COMMAND(OUTPUT ${PCH_DST} ${PCH_DEP}
COMMAND ${CMAKE_CXX_COMPILER} -x c++-header ${COMMON_CXXFLAGS} ${COMPILER_DEFINITIONS} -std=gnu++1z -c ${PCH_HEADER} -o ${PCH_DST} -I${CMAKE_SOURCE_DIR}/lib/include/server -I${CMAKE_SOURCE_DIR}/lib/include
MAIN_DEPENDENCY ${PCH_HEADER}
WORKING_DIRECTORY ${PCH_DIR}
COMMENT "Building precompiled header"
VERBATIM)
看起来像是在做它的工作,一旦标题被编辑,它就会被重新编译。但是,更改server.h
中包含的文件之一时,不会触发PCH重新编译。如果server.h
中包含的头文件中的任何头文件被更改,是否可以触发重新编译?