Ich versuche derzeit, Gcov und Gcovr von CMake unter Windows mit MinGW zu verwenden. Das Kompilieren der Dateien mit den richtigen Flags funktioniert wie ein Zauber. CLion verwendet jedoch einen Out-of-Source-Build, den Gcov nicht versteht.Finden und verschieben Sie Dateien mit der Erweiterung zur Build-Zeit mit CMake
Unter Linux habe ich folgendes alle *.gcda
und *.gcno
den CMAKE_SOURCE_DIR
von CMAKE_BINARY_DIR
Unterordner zu kopieren:
set(GCOV_DATA_DIR "${CMAKE_SOURCE_DIR}/gcov_data")
add_custom_target(prepare_coverage
# Copy necessary files to CMAKE_SOURCE_DIR
COMMAND ${CMAKE_COMMAND} -E make_directory ${GCOV_DATA_DIR}
COMMAND find ${CMAKE_BINARY_DIR} -name \"*.gcda\" -o -name \"*.gcno\" | xargs -l -i cp {} "${GCOV_DATA_DIR}"
)
Hinweis, dass Test Binärdateien in CMAKE_BINARY_DIR
ausgeführt werden. Das funktioniert ziemlich gut und ich kann Gcovr mit einigen zusätzlichen Flags später anrufen, um einen schönen Bericht zu bekommen.
Allerdings habe ich unter Windows nicht xargs
(ich war bereits davon überzeugt, dass find
hat funktioniert). Um diesen CMake-Befehl plattformunabhängig zu machen, suche ich nach einer Möglichkeit, CMake zu finden, zu kopieren und die Dateien während der Erstellungszeit zu verschieben (ähnlich wie beim Erstellen des Verzeichnisses).
Kann mir jemand sagen, ob das möglich ist und wie soll ich das machen? Natürlich kann ich immer zusätzliche Programme oder Skripte installieren, aber ich würde das lieber in CMake lösen, anstatt alle Entwickler anzuweisen, verschiedene Tools zu installieren.
In Bezug auf 'find' und' cmake' schauen Sie bitte [hier] (http://stackoverflow.com/a/34995590/2436175). Die Tatsache, dass Sie 'find' verwenden können, lässt mich denken, dass Sie etwas wie [msys] (http://www.mingw.org/wiki/msys) installiert haben. – Antonio
Wie schon erwähnt, verwende ich MinGW. Ich habe auch die MSYS-Pakete installiert. –
Wie Sie in meinem Kommentar zu der akzeptierten Antwort sehen können, habe ich jetzt eine Lösung, die Standard-Windows-Tools beinhaltet. –