MenüHomeBlogMagic

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.

Permalink: https://adirmeier.de/Blog/ID_311
Tags: Blog, c/c++, cmakevon am 2020-03-26