Die Variable SINGLE_MODE ist etwas höher definiert. Wenn ich den Nachrichtenbefehl verwende, um den Inhalt der Flag-Variablen anzuzeigen, sieht es gut aus:
Aber wenn ich mit dem Kompilieren beginne, tritt ein Kompilierungsfehler auf. Mit dem ausführlichen Modus habe ich festgestellt, dass es im Compiler-Aufruf so aussieht:
Das heißt, irgendwie wurde ein Semikolon hinzugefügt, bevor das -lglapi zur Liste hinzugefügt wurde.
Hatte hier jemand ein ähnliches Problem und kennt eine Möglichkeit, dieses Problem zu beheben? Ich habe eine ganze Weile gegoogelt und das CMake-Handbuch studiert, konnte aber nicht sehen, was ich hier falsch gemacht habe.
Danke, Tobias
Hast du versucht SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lglapi")?
– jpo38
27. April 2015 um 16:42 Uhr
@jpo38 Sie sollten eine Antwort geben und Ihren verdienten Ruf bekommen 🙂
– Antonio
27. April 2015 um 16:46 Uhr
@jpo38, danke. Das hat funktioniert. Daran hätte ich selbst denken sollen, aber wenn man etwas zu lange betrachtet, wird man dafür irgendwie blind.
– TobiSF
27. April 2015 um 16:47 Uhr
Vielen Dank. Da ich auf meinem aktuellen Rechner kein CMake installiert habe, konnte ich nicht testen. Bevor Sie eine ungetestete Antwort posten, möchten Sie lieber Ihr Feedback haben, um keine Ablehnungen zu erhalten ….;-). Jetzt bereit für Upvotes!
Dann sind Sie sicher, dass Sie anhängen -lglapi zum Bestehenden ${CMAKE_CXX_FLAGS} Schnur. Ansonsten sieht es so aus, als würde so etwas wie eine CMake-Liste erstellt.
Das ist sehr Boilerplate. Gibt es eine kürzere Lösung?
– nowox
31. August 2017 um 6:45 Uhr
@nowox: Mir ist nichts bekannt
– jpo38
31. August 2017 um 6:51 Uhr
Oh 🙁 Ich kenne CMake nicht wirklich, aber ist es nicht möglich, es zu verwenden list(APPEND?
Dies ist sehr praktisch, wenn Sie die Flags nur für eine Sprache setzen möchten (C++ im obigen Beispiel), aber wenn Sie die gleichen Flags für alle Sprachen setzen möchten, können Sie einfach Folgendes tun:
add_compile_options(-lglapi)
Beide Befehle ändern die Flags für das gesamte Verzeichnis, wenn Sie die Flags nur für ein Ziel setzen möchten, tun Sie Folgendes:
target_compile_options(my_lib PUBLIC -lglapi)
Flaggen auf einem Ziel können entweder sein ÖFFENTLICH, PRIVAT oder SCHNITTSTELLEwodurch die Flags transitiv von einem Ziel zum anderen weitergeleitet werden können.
Nur für den besonderen Fall, in dem Sie Compiler- und Linker-Optionen hinzufügen möchten (wie für die Option –coverage), fügt die folgende Syntax die Flags sowohl zum Linker als auch zum Compiler hinzu:
(Die obigen Befehle fügen die Option –coverage sowohl den Compiler- als auch den Flag-Optionen für C und C++ hinzu.)
Andernfalls, wenn Sie es vorziehen, neue CMake-Befehle (add_compile_options und add_link_options) zu verwenden, vergessen Sie nicht, auch die Linker-Option hinzuzufügen:
Hast du versucht
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lglapi")
?– jpo38
27. April 2015 um 16:42 Uhr
@jpo38 Sie sollten eine Antwort geben und Ihren verdienten Ruf bekommen 🙂
– Antonio
27. April 2015 um 16:46 Uhr
@jpo38, danke. Das hat funktioniert. Daran hätte ich selbst denken sollen, aber wenn man etwas zu lange betrachtet, wird man dafür irgendwie blind.
– TobiSF
27. April 2015 um 16:47 Uhr
Vielen Dank. Da ich auf meinem aktuellen Rechner kein CMake installiert habe, konnte ich nicht testen. Bevor Sie eine ungetestete Antwort posten, möchten Sie lieber Ihr Feedback haben, um keine Ablehnungen zu erhalten ….;-). Jetzt bereit für Upvotes!
– jpo38
27. April 2015 um 16:50 Uhr