Коллеги!
Мы используем "cmake" для нашей системы сборки и регрессии.Некоторые пользователи используют «ninja», а другие «make» для базового генератора cmake.
У нас есть несколько пользовательских целей, которые вызывают внешние инструменты, которые генерируют DIRECTORIES с различными подкаталогами и файлами.
При попытке «очистить» пользователи Ninja получают сообщение об ошибке:
ninja: error: remove(<dirABC>/<subdirXYZ>): Directory not empty
ninja: error: remove(<dirABC>): Directory not empty
...
Я перечисляю выходной каталог как выходной файл моей пользовательской цели сборки («dirABC» выше).Это не позволяет рекурсивное удаление.
Список файлов и имен подкаталогов (ниже «dirABC») не может быть известен во время настройки или генерации.Имена на самом деле известны только после запуска.
Мой вопрос:
Как пользователи-ниндзя могут удалить эти выходные каталоги и их содержимое при запуске "ninja clean"?
Обратите внимание, что у пользователей "make" нет этой проблемы.Я помечаю каталог с помощью свойства "ADDITIONAL_MAKE_CLEAN_FILES".Make делает "rm -rf" в каталоге вывода верхнего уровня, и мы чисты.Ключ в том, что «-r»!
В cmake я бы хотел добавить зависимость к «чистой» цели верхнего уровня, чтобы сказать, как на самом деле очистить, но cmake не позволяет этого...