Я пытаюсь выяснить, как поддерживать зависимости моих предварительно скомпилированных заголовков.Он включает в себя 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)
Похоже, он выполняет свою работу, и он перекомпилируется после редактирования заголовка.Однако повторная компиляция PCH не запускается при изменении одного из файлов, включенных в server.h
.Есть ли способ вызвать перекомпиляцию, если какой-либо из заголовков, включенных в server.h
, был изменен?