Почему сборка CMake не начинает сборку при изменении файла заголовка - PullRequest
0 голосов
/ 20 февраля 2019

Ниже приведен небольшой пример того, как я строю свой проект.У меня есть список заголовков и список исходных файлов, и я передаю их в add_executable.Иногда после нескольких инкрементных сборок я изменяю заголовочный файл, но сборка ничего не делает.Статус показывает, что каждая цель отмечена, но никаких изменений не видно.Если я сделаю небольшую модификацию в файле CPP, то сборка будет выполнена.

Что может быть причиной этого?

list (APPEND ${PROJ_NAME}_SRC_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/lua/lua_config.hpp)
list (APPEND ${PROJ_NAME}_SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/source/lua/lua_config.cpp)
add_executable(${PROJ_NAME} ${${PROJ_NAME}_SRC_FILES} ${${PROJ_NAME}_SRC_HEADERS})

Я использую генератор Unix Makefiles '.

Я вижу, что все заголовочные файлы моих проектов не являются частью сгенерированного файла depend.cmake.Я думаю, что это корень проблемы.Все заголовочные файлы из других пакетов conan есть, но не для проектов верхнего уровня.

1 Ответ

0 голосов
/ 21 февраля 2019

Для добавления заголовочных файлов в файл depen.make необходимы две вещи.Сначала добавьте их в список файлов цели, что я и сделал, и добавьте каталог include, используя target_include_directories.

target_include_directories(${PROJ_NAME} PRIVATE
     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
)

. На данный момент он все еще не работает.Это потому, что я передаю два списка файлов, разделенных символом пробела ' '.После того, как я соединил два списка в один, используя ';', он начал работать.

add_executable(${PROJ_NAME} "${${PROJ_NAME}_SRC_FILES};${${PROJ_NAME}_HEADER_FILES}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...