mam dynamiczne biblioteki, który dostaje inną nazwę w zależności od konfiguracji, określonej w skryptach CUpewnij przez:skopiować pliku docelowego do innej lokalizacji w kroku po kompilacji w CMake
set_target_properties(${name} PROPERTIES OUTPUT_NAME ${outputName}64)
set_target_properties(${name} PROPERTIES DEBUG_OUTPUT_NAME ${outputName}64_d)
Końcowym rezultatem jest to, że uzyskać inną nazwę na wersjach i debugowaniu kompilacji. Chciałbym skopiować powstałą bibliotekę do innego katalogu jako etap post-kompilacji, ale prezent (?) CMake-Fu nie uśmiechał się na twój naprawdę.
Próbowałem w ten sposób:
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}
)
Działa to dobrze dla uwalniania buduje, ale dla debugowania źródło nie obejmuje _D że bym się spodziewał. Jak uzyskać wyjściową ścieżkę docelową, aby można było skopiować plik?
Uwaga: Jak widać z powyższego fragmentu, jest obecnie dla Windows/Visual Studio, ale chciałbym to do pracy na OS X/Xcode/zrobić jak dobrze.
Uwaga: muszę biblioteki mają być umieszczone w dodatkowym katalogu, który służy jako katalog wyjściowy dla wielu innych projektów, które zależą od tej biblioteki, tak, że te projekty są w stanie załadować biblioteki w czasie wykonywania. Alternatywnym rozwiązaniem, które byłoby akceptowalne, byłoby stworzenie niestandardowego celu kopiowania, aby inne projekty mogły polegać na tym projekcie, który z kolei zależy od biblioteki.
Jeśli kierowania Xcode lub Visual Studio, można użyć zamiast RUNTIME_OUTPUT_DIRECTORY i niech IDE dbać o dołączenie poprawną konfigurację. (jak byś odkrył, gdybyś uruchomił pomoc, dodano cmd @Fraser) –