Wie man CMake zeigen, Header -, die nicht Teil der binary-Ziel-in der IDE?

In unseren workflow haben wir einen Modul A das ist aus mehreren header-Dateien, Modul A nicht produzieren jede binäre (Anmerkung: es wird offensichtlich sein, für andere Module, das sind einige der überschriften aus Modul A zu produzieren binaries).

Ein gutes Beispiel wäre eine header-only-Bibliothek, für die CMake 3 stellt eine gute Unterstützung durch den Begriff der INTERFACE - Bibliothek (siehe diese SO beantworten, und CMake ist Dokumentation der Funktion).

Können wir ein interface Bibliothek das Ziel aus Modul A:

add_library(module_A INTERFACE)

Gibt uns all die schönen features von CMakes Ziele (es ist möglich, verwenden Sie es als ein weiteres Ziel die Abhängigkeit, um es zu exportieren, um transitiv vorwärts Anforderungen etc.)

Aber in diesem Fall werden die überschriften in Modul A nicht zeigen, bis in unsere IDE (Xcode, aber wir erwarten, dass es das gleiche mit den meisten/alle anderen IDE).

Erweist sich das als einen großen Nachteil im workflow, da brauchen wir die Dateien Komponieren Modul A gezeigt werden in der IDE für die edition. Ist es möglich das zu erreichen ?

  • Ah mein Kommentar gelöscht. Gute Frage.
  • Vielen Dank für Ihr Interesse an der Frage, und Ihre Anregung. Leider ist die INTERFACE form add_library Befehl nicht erwarten, dass alle Datei-argument (siehe die Letzte form in der Dokumentation). In der Tat, wir brauchen also nicht unbedingt eine INTERFACE, aber das ist der einzige änderbar non-binary-Ziel sind wir uns bewusst. [Für den Kontext, IdeaHat Frage mich, ob wir könnten den header-Dateien der add_library Befehl in seiner INTERFACE form]
  • Einen hack Weg wäre, um eine dummy-custom target (nie gebaut, oder keine build-Schritte) mit diesen Dateien als Quelle...für meine persönliche Bildung, haben Sie einen link zu CMake, die definition verändert?
  • Ich werde sehen, dass Konzept, die Vereinbarung würde es der hackish Weg ; ) in Bezug auf den Begriff der Ziel-Veränderlichkeit, ich habe nicht gefunden, eine definition in der Dokumentation, aber durch Ableitung von die Pseudo-Ziele Dokumentation, meine Vermutung wäre, dass: ein veränderliches Ziel haben können (zumindest teilweise) seine Eigenschaften geschrieben. [einige der bezieht sich auf den Begriff der "weissen Liste" Eigenschaften, zB. die Begrenzung, welche Eigenschaften geschrieben werden können, auf eine INTERFACE].
  • Ja...ich bin nicht wirklich sicher, was die interface-Bibliothek gibt, die Sie über den add-target, außer dass Sie mehr semantisch korrekt. Meine Erfahrung mit CMake bisher hat es immer funktioniert, aber dein build-Skripte oft am Ende ein wenig hackaliscous, wenn Sie es wollen, um gut zu funktionieren 🙁
  • Die aufgenommenen unter feature request cmake.org/Bug/view.php?id=15234
  • Könnten Sie das Ziel konfigurieren irgendwie mit der add_custom_target Befehl? Ich bin mir nicht sicher, dass ich alle verstehen, die details in Ihrer Umsetzung, aber diese eine nützliche Methode, IMHO, zu erweitern, die CMake-Funktionen. Sie können jederzeit kombinieren Sie diese CMake-Befehl mit dem Befehl Linie CMake ausführbare Datei kopieren, verschieben oder löschen Sie Quelle, um die Dateien.
  • FWIW, hier ist der link zum feature-request in Ihrer neuen tracker gitlab.kitware.com/cmake/cmake/issues/15234

InformationsquelleAutor Ad N | 2014-11-20
Schreibe einen Kommentar