staging.inyokaproject.org

Baustelle/cmake

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels CMake.

Mig58

Anmeldungsdatum:
20. Juni 2008

Beiträge: Zähle...

Ich habe hier ein Paar kleine Anmerkungen zu dem Artikel:

Benutzung: "... Denoch gibt es immer Situationen, wo man eingreifen muss.". Das hört sich so an als ob man nach einem CMake-Lauf nachträglich an der Make-Datei was verändern muss. Dies ist in keinem Fall notwendig noch ratsam.

Grundlagen: "...CMake akzeptiert dabei sowohl relative Pfade als auch absolute". Das tut zwar CMake, aber bei größeren Projekten kommt man mit relativen Pfaden in Teufel's Küche. Bei einem CMake-Lauf ruft sich CMake, unsichtbar für den Benutzer, mehrmals sich selbst auf. Dabei verändert sich der Ursprung auf dem der relative Pfad beruht, was zu unvorhersehbaren Ergebnissen führen kann. Stattdessen sollte man immer mit absoluten Pfaden arbeiten. Die Variablen CMAKE_CURRENT_SOURCE_DIR/CMAKE_SOURCE_DIR oder CMAKE_CURRENT_BINARY_DIR/CMAKE_BINARY_DIR, die absolute Pfade enthalten, können hier enorm helfen.

"cmake .." funktioniert nur wenn das übergeordnete Verzeichnis eine CMakeLists.txt-Datei enthält.

Optionen einstellen: Finger weg von der Datei CMakeCache.txt. Wie der Name schon sagt, hier handelt es sich um eine Cache-Datei von CMake. Ein jedes "Delete Cache" löscht diese Datei. Es gibt praktisch keinen Fall der hier Manipulationen rechtfertigen würde.

CMake-Dateien Wurzelverzeichnis

ADD_SUBDIRECTORY(lib) sollte vor ADD_SUBDIRECTORY(src) damit auch dem Leser die Abhängigkeiten klar sind (CMake kann das automatisch). "lib" muss fertig sein bevor mit src angefangen wird. Dies ist vor allem wichtig, wenn man mehr als einen Prozessor in seinem Rechner hat.

INSTALL(FILES img/icon.png DESTINATION img) Man sollte dem Leser vielleicht sagen wohin die Datei jetzt installiert wird. ${CMAKE_INSTALL_PREFIX}

Verzeichnis src SET(CMAKE_INCLUDE_CURRENT_DIR ON) ist überflüssig.

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

der Artikel ist nicht als fertig gemeldet...

Wenn du am Artikel mitarbeiten möchtest solltest du kurz den "Erstautor" per PN kontaktieren. Dann geht das i.d.R. ok.

Gruß, noisefloor

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11288

Hi!

Mein Lieblingsartikel! Und er sollte schon vor fast 3 Monaten fertig sein! Ist er aber immer noch nicht 😢

so long
hank

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5809

Hallo, leider hatte ich in letzter Zeit erst (bis August) sehr viel mit meiner Bachelorarbeit zu tun, seitdem bin ich im Auslandssemester in Schweden. Jetzt ist aber die erste Hälfte des Semesters und dessen Klausuren und Projekte fast durch und ich habe wieder Zeit. Einige Änderungen sind schon drin, die anderen Sachen werde ich in der nächsten Woche spätestens bearbeiten.

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5809

Mig58 schrieb:

Benutzung: "... Denoch gibt es immer Situationen, wo man eingreifen muss.". Das hört sich so an als ob man nach einem CMake-Lauf nachträglich an der Make-Datei was verändern muss. Dies ist in keinem Fall notwendig noch ratsam.

Stimmt, hab ich drin.

Grundlagen: "...CMake akzeptiert dabei sowohl relative Pfade als auch absolute". Das tut zwar CMake, aber bei größeren Projekten kommt man mit relativen Pfaden in Teufel's Küche. Bei einem CMake-Lauf ruft sich CMake, unsichtbar für den Benutzer, mehrmals sich selbst auf. Dabei verändert sich der Ursprung auf dem der relative Pfad beruht, was zu unvorhersehbaren Ergebnissen führen kann. Stattdessen sollte man immer mit absoluten Pfaden arbeiten. Die Variablen CMAKE_CURRENT_SOURCE_DIR/CMAKE_SOURCE_DIR oder CMAKE_CURRENT_BINARY_DIR/CMAKE_BINARY_DIR, die absolute Pfade enthalten, können hier enorm helfen.

Hier beziehe ich mich auf den Aufruf von cmake zur Generierung der make-files. Ich nehme die Anmerkung aber für den letzten Teil zur Kenntnis.

"cmake .." funktioniert nur wenn das übergeordnete Verzeichnis eine CMakeLists.txt-Datei enthält.

Ein guter Hinweis.

Optionen einstellen: Finger weg von der Datei CMakeCache.txt. Wie der Name schon sagt, hier handelt es sich um eine Cache-Datei von CMake. Ein jedes "Delete Cache" löscht diese Datei. Es gibt praktisch keinen Fall der hier Manipulationen rechtfertigen würde.

Ich hatte tatsächlich beim Cross-Compilen Probleme CMake klarzumachen wo der entsprechende Kompiler lag. Das ging dann einfacher über die Cache.txt, vermutlich ist eine lokale Toolchain-Datei aber sinnvoller.

Ansonsten darfst du sehr gerne mitarbeiten. Ich habe auch schon (sobald der Artikel hier fertig ist) darauf aufbauende Artikelideen, u.a. Cross-compilen für Windows mit c++/Qt4 unter Benutzung von CMake.

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5809

Hah, diesmal hab ich doch tatsächlich die von mir gesetzte Frist eingehalten 😉. Bitte drübergucken, Rechtschreib- und Grammatikfehler sind sicher noch einige drin, falls noch irgendwas unklar ist erläutere oder verbessere ich das auch noch.

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11288

Hi!

Na, wurde ja auch Zeit! 😉

Rechtschreib- und Grammatikfehler sind sicher noch einige drin

Einige??? und mit Kommasetzung hast du's auch nicht so, oder? 😀

Hab' einmal durchgeschliffen, macht dann ein Hefeweizen auf dem nächsten Teamtreff - 😈

ansonsten sieht das aber sehr gut aus! 👍

so long
hank

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5809

Heinrich Schwietering schrieb:

Rechtschreib- und Grammatikfehler sind sicher noch einige drin

Einige??? und mit Kommasetzung hast du's auch nicht so, oder? 😀

Das hast du sehr gut erkannt, meine Bachelorarbeit wurde von 3 Leuten mehrfach durchgelesen und ich glaube die haben nicht alles gefunden 😉.

Hab' einmal durchgeschliffen, macht dann ein Hefeweizen auf dem nächsten Teamtreff - 😈

Sehr gerne! Von mir aus ist dann alles soweit, martingr hat auch schonmal drübergeguckt und es für gut befunden. Wenn sonst nix mehr is wären wir dann hiermit durch 😀.

frustschieber Team-Icon

Ehemalige
Avatar von frustschieber

Anmeldungsdatum:
4. Januar 2007

Beiträge: 4259

verschoben und nach Programmierung verlinkt. Danke an hefeweiz3n

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5809

Was mir grade noch auffällt: Ist es möglich den Namen noch auf CMake zu ändern? Das wäre nämlich die richtige Schreibweise...

cornix Team-Icon

Avatar von cornix

Anmeldungsdatum:
9. März 2007

Beiträge: 4763

Hefeweiz3n schrieb:

Was mir grade noch auffällt: Ist es möglich den Namen noch auf CMake zu ändern? Das wäre nämlich die richtige Schreibweise...

Habe ich gerade versucht, aber es ging nicht. Wenn ein anderer Mod das reproduzieren kann, machen wir ein Ticket auf.

Gruß, cornix

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11288

Hi!

Geht über einen Umweg: Erst in irgendwas umbenennen, dann nach CMake - mach ich gleich mal - und siehe da :CMake. Müssen nur noch die Backlinks angepasst werden, jetzt auch erledigt...

so long
hank

cornix Team-Icon

Avatar von cornix

Anmeldungsdatum:
9. März 2007

Beiträge: 4763

Heinrich Schwietering schrieb:

Geht über einen Umweg: Erst in irgendwas umbenennen, dann nach CMake

Exakt das hatte ich auch versucht. Hätte ich dem Cache wohl ein paar Sekunden mehr geben sollen. 😉

Antworten |