Я боюсь, что ваше требование (концептуально, make
создать что-то, что make clean
не удаляет) довольно необычно. Я могу придумать два возможных решения / обходных путей.
Один , переместите генерацию файла во время CMake. То есть создайте его, используя execute_process()
вместо add_custom_command()
. Это может или не может быть возможным, в зависимости от того, зависит процесс создания файла (текущая пользовательская команда) от остальной части сборки.
Два , полностью скрыть существование файла примера от CMake. То есть, пользовательская команда также должна сгенерировать какой-то другой файл (может быть, просто файл метки времени), и вместо этого его пользовательская цель управления будет зависеть от этого. Не указывайте файл примера в качестве зависимости, вывода или побочного продукта пользовательской команды. Таким образом, от этого ничего не будет зависеть, и ни CMake, ни Ninja не должны заботиться о том, существует он или нет, поэтому они не будут жаловаться или пытаться его почистить.