CMAKE Debug und Release im Output Path
Wer in Cmake, z.B. in einem add_custom_command Debug oder Release im Ausgabeverzeichnis stehen hat, könnte Probleme bekommen auf seine gebauten Sachen zuzugreifen.
Abhilfe schafft hier eine configurationsbedingte String ausgabe wie:
$<$<CONFIG:Debug>:DebugDir>$<$<CONFIG:Release>:ReleaseDir>
Im Prinzip ist es eine Inline abfrage ob der folgende String ausgegeben wird. In diesem Fall wird DebugDir bei Debug ausgegeben oder ReleaseDir bei Release.
Beispiel in einem Command:
add_custom_command(
OUTPUT "../../Output/Test.dll"
DEPENDS "$<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>/Test.dll"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>/Test.dll" "../../Output/Test.dll"
)
Hier wird eine Test.dll entsprechend der aktuellen Konfiguration in ein Output Verzeichnis kopiert.
In weiteren Schritten kann jetzt, unabhängig von Debug oder Release, auf den Output "../../Output/Test.dll", z.B. in einem add_custom_target, verwiesen werden.