Фон
У меня большой проект, который отлично работает на Windows.Когда некоторые изменения применяются в CMakeLists.txt
и проект создается, проект Visual Studio корректно обновляется.
Версия Xcode: 10.0 (10A255) или 10.1 (10B61) (протестировано на разных компьютерах).
cmake версия: 3.12.2 или 3.13.1
Проблема
Проблема появляется, когда тот же проект построен на Mac OS для Xcode.После настройки cmake:
cmake .. -G Xcode
Сгенерированный проект работает нормально, все собирается правильно и тестирование проходит.
Теперь при изменении файлов CMakeLists.txt
(при разработке проекта или при извлечении новых изменений изрепозиторий) и ZERO_CHECK
или BUILD_ALL
, сборка не приводит к обновлению проекта Xcode.Вызов cmake .
также не обнаруживает изменений.
Обходной путь
Лучший найденный мной обходной путь - удаление всего двух файлов: cmake_install.cmake
и CMakeCache.txt
,Затем выполните команду повторного запуска, которая генерирует проект cmake .. -G Xcode
.
. В этом сценарии все обнаружение заново выполняется с нуля, но по крайней мере сборка не начинается с нуля (неизмененные файлы не перекомпилируются).
Это больно, так как много ручного материала должно быть сделано, и проект должен быть воссоздан, и это требует времени.
Подсказки
В каком-то предыдущем проекте у меня была похожая проблема, но это происходило только если mavenобнаруживал обновления для зависимостей, поэтому это случалось довольно редко.Когда это случилось, я просто позвонил touch CMakeLists.txt
и собрал снова, и это было нормально.Это решение не применимо, так как каждая сборка имеет эту проблему.
Я подозревал, что с процедурой генерации protobuf что-то связано, но когда я отключил ее, проблема все еще сохраняется.
I 'Мы пытались предоставить полный минимальный пример, создав простой файл проекта, но я не смог воспроизвести проблему.Для всех других проектов это просто работает, поэтому настройка системы не является проблемой.
Вопросы
Как отладить процесс создания проекта при запуске cmake
, чтобы найти источник этой проблемы?
Является ли это известной проблемой?
Существует ли лучший обходной путь, который не приведет к полной перестройке восстановлению файла проекта (который также включает определение возможностей системы)?