Как объединить несколько импортированных целей в одну - PullRequest
0 голосов
/ 21 января 2020

Не найдя ответа на этот вопрос, я решил опубликовать его здесь. Я пытаюсь настроить небольшую сборку на основе cmake и не уверен, как мне ее решить. Я понимаю, что вопрос касается «как», а не «что», но я открыт для любого альтернативного решения, которое не похоже на взлом.

Мне нужно добавить команду post build, чтобы скопировать некоторые ( import) dll для вывода моей цели:

add_custom_command(TARGET MyTarget POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
            $<TARGET_FILE:MyImportedDlls::All>
            $<TARGET_FILE_DIR:MyTarget>
) 

Я создал скрипт "find" для импортированных dll, который создает одну цель для каждой dll

set(LIB_FILES
    "${PATH_TO_LIBS}/lib1.dll"
    "${PATH_TO_LIBS}/lib2.dll"
    "${PATH_TO_LIBS}/lib3.dll"
)

unset(TARGETS)
foreach(LIB_FILE ${LIB_FILES})
    get_filename_component(FN ${LIB_FILE} NAME_WE)
    add_library(MyImportedDlls::${FN} SHARED IMPORTED)
    set_target_properties(MyImportedDlls::${FN} PROPERTIES IMPORTED_LOCATION "${LIB_FILE}")
    list(APPEND TARGETS "MyImportedDlls::${FN}")
endforeach()

Моя проблема: как создать «комбинированную» цель, которую я могу использовать в своей пользовательской команде?

1 Ответ

0 голосов
/ 21 января 2020

Просто используйте 3 команды посткомпоновки, по одной для каждой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...