ich eine dynamische Bibliothek, die einen anderen Namen je nach Konfiguration erhält, indem sie in der CMake Skripte angegeben:Kopieren Zieldatei an einem anderen Ort in einem Beitrag Build-Schritt in CMake
set_target_properties(${name} PROPERTIES OUTPUT_NAME ${outputName}64)
set_target_properties(${name} PROPERTIES DEBUG_OUTPUT_NAME ${outputName}64_d)
Das Endergebnis ist, dass ich Bei Release- und Debug-Builds einen anderen Namen erhalten. Ich möchte die resultierende Bibliothek als Post-Build-Schritt in ein anderes Verzeichnis kopieren, aber das Geschenk (?) Von CMake-Fu lächelte nicht wirklich.
habe ich versucht, dies zu tun:
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}
)
Dies funktioniert gut für Release-Builds, aber die Quelle für debuggen beinhaltet nicht die _d, die ich erwartet hätte. Wie bekomme ich den Ausgabepfad für das Ziel, damit ich die Datei kopieren kann?
Hinweis: Wie aus dem obigen Code-Schnipsel zu sehen sind, ist dies zur Zeit für Windows/Visual Studio, aber ich mag dies auf O X/Xcode arbeiten/als auch machen.
Hinweis: Ich brauche die Bibliothek in ein zusätzliches Verzeichnis, das als Ausgabeverzeichnis für mehrere andere Projekte dient, die von dieser Bibliothek abhängen, damit diese Projekte die Bibliothek zur Laufzeit laden können. Eine alternative Lösung, die annehmbar wäre, wäre, in der Lage zu sein, ein benutzerdefiniertes Ziel zu erstellen, das das Kopieren durchführt, so dass die anderen Projekte von diesem Projekt abhängen können, das wiederum von der Bibliothek abhängt.
Wenn Sie Xcode oder Visual Studio zielen, können Sie wollen RUNTIME_OUTPUT_DIRECTORY stattdessen verwenden und lassen Sie die IDE kümmern die korrekte Konfiguration angehängt wird. (wie Sie feststellen würden, wenn Sie die Hilfe cmd @Fraser hinzugefügt) –