#cmake
Вопрос:
- У меня есть цель для общего доступа, и я хочу, чтобы она запускала команду после сборки ТОЛЬКО в том случае, если целевой выходной файл изменился, или то же самое для меня, если сборка обновляется. В моем примере команда запускается каждый раз, когда я создаю проект, но мне нужно, чтобы он запускался только в том случае, если после сборки целевой выходной файл изменился
cmake_minimum_required(VERSION 3.21) project(myexp) add_library(Example SHARED source.cpp) set_target_properties(Example PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin
lt;0:>"
)add_custom_command(TARGET Example POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copylt;TARGET_FILE:Example> ${CMAKE_CURRENT_SOURCE_DIR}/new
DEPENDS Example
)
DEPENDS
здесь не работаетиз документации — add_custom_command
The second signature adds a custom command to a target such as a library or executable. This is useful for performing an operation before or after building the target. The command becomes part of the target and will only execute when the target itself is built. If the target is already built, the command will not execute.
может быть, мое понимание этого неверно
- есть ли способ многовыходного вывода
Спасибо
Комментарии:
1.
DEPENDS doesnt work here
Каким образом это не работает? Откуда вы знаете, что это не работает?is there a way to Multi-OUTPUT
Что это значит? Что такое «Многовыходный»?2. @KamilCuk У меня есть цель для общего доступа, и я хочу, чтобы она выполняла команду после сборки, если целевой выходной файл изменился
3. @KanilCuk Мульти-ВЫВОД — вывод DLL-файла в несколько каталогов
4. Удалять
DEPENDS Example
. Форма сPOST_BUILD
не использует его. Он работаетPOST_BUILD
, он уже знает, когда нужно работать.5. @KamilCuk он запускает КОМАНДУ каждый раз, когда я строю, но мне нужно, чтобы она запускалась только в том случае, если после сборки — целевой выходной файл (Example.dll) изменено