Я строю исполняемый файл, используя стандартную команду:
add_executable(MyExe a.c b.c)
Я настраиваю CMAKE_EXE_LINKER_FLAGS
для создания файла карты, и это работает.
Однако, если я удаляю файл карты, выполнение инкрементной сборки не восстанавливает файл карты. Это имеет смысл, поскольку я не говорил cmake, что файл карты зависит от MyExe. В приведенном выше сценарии MyExe.map даже не является целью, поэтому cmake даже не знает, что он существует.
Я пытался создать пользовательскую цель, но не могу создать пользовательскую команду, которая регенерирует файл карты, так как он прибывает из add_executable. Затем я попытался использовать add_dependencies(), но это, похоже, влияет только на порядок сборки.
Я мог бы явно перезапустить компоновщик как пользовательскую команду, которая создает пользовательскую цель, но это кажется расточительным, поскольку связывание занимает немного времени.
Похоже, мне нужен какой-то способ сказать add_executable, что выходных данных больше, чем просто исполняемый образ. Есть ли способ сделать это?
Если бы кто-нибудь мог указать мне правильное направление, я был бы признателен! Заранее спасибо за чтение.