В моем CMakeLists.txt я использую add_custom_command вместе с add_custom_target для вызова шага генерации кода.
Если шаг генерации кода выполнен успешно, но отсутствует один из файлов, упомянутых в аргументе OUTPUT для add_custom_commandmake удаляет первый файл, упомянутый в OUTPUT, по причинам, изложенным в Почему GNU заставляет удалить файл
(первый файл OUTPUT, поскольку это «основной» файл, который связан сс командой в сгенерированном Makefile)
Пока все хорошо.Проблема, с которой я столкнулся, заключается в том, что это не приводит к немедленной неудаче сборки .Вместо этого, когда сгенерированный код фактически используется в компиляции, компилятор жалуется на отсутствующий заголовок, который, по иронии судьбы, является не файлом, который генератор не сгенерировал, а файлом make, удаленным.
Сообщение, объясняющеето, что файл был удален, также появляется только тогда, когда make запускается с VERBOSE = 1, оставляя меня в темноте слишком долго.
Deleting primary custom command output "/app/tests/eclipseProject/projects/math/build/aragen/matrix2Component/matrix2/includes/serviceInterfaces/matrix/proxy_Mat_SI.h" because another output "/app/tests/eclipseProject/projects/math/build/aragen/matrix2Component/matrix2/vsomeip/serviceInterfaces/matrix/proxy_vsomeip_Mat_SI.h" does not exist.
Как я могу убедиться, что сборка не удалась при попытке собрать поколениецель, перед компиляцией?