Wie kann man einen benutzerdefinierten Schritt zu einem autobasierte Projekt in KDevelop hinzufügen?

StackOverflow https://stackoverflow.com/questions/107160

  •  01-07-2019
  •  | 
  •  

Frage

ich Arbeit auf einem persönlichen Codierung Projekt mit C ++ und KDevelop vor kurzem begonnen. Obwohl ich um nur durch Hacking begann, Figur, die ich es auf lange Sicht besser sein werde, wenn ich, bevor sie zu viel weiter eine richtige Einheit Test-Suite eingerichtet. Ich habe einen separaten Test-Runner ausführbar als Unterprojekt erstellt, und die Tests, die ich ihm hinzugefügt haben scheinen richtig zu funktionieren. Bisher Erfolg.

Allerdings würde ich wirklich jedes Mal, wenn ich, bauen laufen möchte meine Unit-Tests erhalten nicht nur, wenn ich sie explizit ausgeführt werden. Dies ist besonders wahr, wie ich das Chaos aufgespalten ich in Convenience-Bibliotheken gemacht haben, von denen jede wahrscheinlich eine eigene Test ausführbar wird. Anstatt sie alle von Hand ausgeführt wird, würde Ich mag sie als letzten Schritt in meinem Build-Prozess laufen zu bekommen. Ich habe alle durch die Optionen im Menü Projekt gesucht und die auto Manager, aber ich kann nicht herausfinden, wie diese einzurichten.

Ich stelle mir das wahrscheinlich durch die Bearbeitung der Make-Datei von Hand gemacht werden kann. Leider ist mein Make-Datei-fu ein wenig schwach, und ich bin auch Angst, dass KDevelop alle Änderungen überschreiben könnte ich von Hand machen das nächste Mal, wenn ich etwas über die IDE ändern. Deshalb, wenn es eine Möglichkeit, wie dies durch KDevelop selbst zu tun, ich würde viel lieber diesen Weg gehen.

Weiß jemand, wie ich konnte KDevelop bekommen zu meinem Test ausführbare Dateien als Teil des Build-Prozesses laufen? Vielen Dank!

(Ich bin nicht 100% KDevelop gebunden. Wenn KDevelop können dies nicht tun, oder aber, wenn es eine IDE, die diese viel einfacher macht, kann ich überzeugt sein, zu wechseln.)

War es hilfreich?

Lösung

Obwohl Sie könnte manipulieren, um den Standard `make` Ziel Ihre Tests auszuführen, es ist in der Regel nicht zu empfehlen, weil jeder Aufruf von

make

würden alle Tests laufen. Sie sollten stattdessen das „check“ Ziel verwenden, Das ist ein akzeptierter Quasi-Standard unter dem Software-Paketen. Dadurch, dass Die Tests werden nur gestartet, wenn Sie laufen

make check

Anschließend können Sie KDevelop leicht konfigurieren zu laufen „make check“ statt nur „make“.

Da Sie auto verwenden (durch KDevelop), Sie brauchen nicht die „check“ Ziel selbst zu schreiben. Stattdessen nur Ihre `Makefile.am` bearbeiten und einige Variablen gesetzt:

TESTS = ...

Bitte haben Sie einen Blick auf die auto Dokumentation, „Unterstützung für Testsuiten“ für weitere Informationen.

Andere Tipps

Ich habe es funktioniert so:

$ cat src/base64.c
//code to be tested
int encode64(...) { ... }

#ifdef UNITTEST
#include <assert.h>
int main(int argc, char* argv[])
{
  assert( encode64(...) == 0 );
  return 0;
}
#endif //UNITTEST
/* end file.c */

$ cat src/Makefile.am
...
check_PROGRAMS = base64-test
base64_test_SOURCES = base64.c
base64_test_CPPFLAGS = -I../include -DUNITTEST
TESTS = base64-test

A Check machen würde src / base64-Test bauen und führen Sie es:

$ make check
...
PASS: base64-test
==================
All 1 tests passed
==================
...

Jetzt versuche ich, alles als m4 Makro einzukapseln wie folgt verwendet werden:

MAKE_UNITTEST(base64.c)

, die über so etwas wie die Lösung produzieren sollten.

Hope, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top