Ich versuche ein CMake-Projekt zu erstellen, in dem ich Tests abhängig vom Build-Typ ausführen möchte. Zum Beispiel Wenn ich einen Leistungsaufbau mache, möchte ich Leistungstests usw. durchführen.ctest ruft keine typspezifischen Build-Tests auf
Ich fand, dass add_test den CONFIGURATIONS
Parameter für diesen Zweck zur Verfügung stellt. Wenn ich jedoch einen Build-Typ zur Verfügung stelle, findet ctest
keine Tests.
Hier ist eine minimalistische CMakeLists.txt
Wiedergabe des Verhaltens.
project (test NONE)
include (CTest)
add_test (NAME test
CONFIGURATIONS Release
COMMAND cowsay)
In Schale:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
ctest
Ausgang:
Running tests...
Test project /home/phil/cmaketest/build
No tests were found!!!
Wenn ich laufen
ctest -C Release
ich das gewünschte Verhalten zu erhalten, dh der Test durchgeführt wird, aber ich würde lieber nicht muss die -C Release
von Hand eingeben.
Mache ich hier etwas falsch oder ist dieses eingerückte Verhalten?
Das Merkwürdige dabei ist, dass die verschiedenen Tests verschiedenen Kompilierung/link-Flags in Build-Schritt müssen, aber ich kann so etwas tun Erstellen eines Release-Builds mit 'cmake -DCMAKE_BUILD_TYPE = Release ..; cmake --build .' und starten Sie dann einen Code-Coverage-Test mit 'ctest -C Coverage'. Dies sollte jedoch eindeutig nicht anerkannt werden. Aber mit meinem derzeitigen Setup gibt es nur sinnlose Ergebnisse. – user26756