GCC,CMake,预编译头和维护依赖项

时间:2018-10-15 04:47:25

标签: c++ gcc cmake precompiled-headers

我试图弄清楚如何维护预编译头文件的依赖性。它包括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中包含的头文件中的任何头文件被更改,是否可以触发重新编译?

1 个答案:

答案 0 :(得分:0)

好吧,两年后。 CMake现在支持precompiled headersunity构建。