Я хочу добавить ссылку ссылки в ссылку в CMake. Например. что-то вроде:Как получить целевое базовое имя в CMAKE_C_LINK_EXECUTABLE?
set(CMAKE_C_LINK_EXECUTABLE
"${CMAKE_C_LINK_EXECUTABLE}"
"postlink <TARGET> ${CMAKE_BINARY_DIR}/$$(basename <TARGET>).foo")
$$(basename <TARGET>)
является та часть, которая дает головную боль. Это не работает. Ни с обратными шагами. <TARGET_BASE>
дает путь к файлу без расширения, но как избавиться от пути к каталогу? Я мог бы обойти это, используя сценарий оболочки для команды postlink, но это было бы довольно уродливо, и мне просто интересно, есть ли лучший способ сделать это.
Я не могу использовать 'add_custom_command()', потому что он будет повторно запускаться при изменении целевого двоичного файла (например, когда он будет удален позже в сборке в нашем случае). Но '' именно то, что я искал. Спасибо, что указали мне на «документацию». –
jil
@jil Добро пожаловать. Но 'add_custom_command (... POST_BUILD ...)' просто заканчивается в «многострочной инструкции» (он не добавляет другую цель и не проверяет зависимости). Более или менее то же самое, что и модификация 'CMAKE_C_LINK_EXECUTABLE', просто чтобы вы могли использовать выражения генератора. Если вы создаете make-файлы, просто попробуйте мой код и посмотрите, что на самом деле создано. – Florian