У меня есть динамическая библиотека, которая получает другое имя в зависимости от конфигурации, указанной в сценариях CMake:
set_target_properties(${name} PROPERTIES OUTPUT_NAME ${outputName}64)
set_target_properties(${name} PROPERTIES DEBUG_OUTPUT_NAME ${outputName}64_d)
Конечным результатом является то, что я получаю другое имя в выпусках и отладочных сборках. Я хотел бы скопировать полученную библиотеку в другой каталог как шаг после сборки, но подарок (?) CMake-Fu действительно не улыбнулся вам.
Я попытался сделать это:
GET_TARGET_PROPERTY(origfile mylibrary LOCATION)
STRING(REGEX REPLACE "/" "\\\\" origfile ${origfile})
set(targetfile my_target_path\\${CMAKE_CFG_INTDIR}\\)
STRING(REGEX REPLACE "/" "\\\\" targetfile ${targetfile})
add_custom_command(TARGET mylibrary POST_BUILD
COMMAND copy ${origfile} ${targetfile}
)
Это отлично работает для релизов, но для отладки источник не включает _d, который я ожидал бы. Как получить выходной путь для цели, чтобы я мог скопировать файл?
Примечание.. Как видно из приведенного выше фрагмента, это в настоящее время для Windows/Visual Studio, но я хотел бы, чтобы это работало и с OS X/Xcode/make.
Примечание. Мне нужно, чтобы библиотека была помещена в дополнительный каталог, который служит в качестве выходного каталога для нескольких других проектов, которые зависят от этой библиотеки, чтобы эти проекты могли загружать библиотеку в во время выполнения. Альтернативным решением, которое было бы приемлемым, было бы создание настраиваемой цели, которая выполняет копирование, так что другие проекты могут зависеть от этого проекта, который, в свою очередь, зависит от библиотеки.