GCC, CMake, предварительно скомпилированные заголовки и ведение зависимостей - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь выяснить, как поддерживать зависимости моих предварительно скомпилированных заголовков.Он включает в себя 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, был изменен?

...