Lunar
Anmeldungsdatum: 17. März 2006
Beiträge: 5792
|
@domachine: Ich weiß nicht, welche C++-Bibliotheken für Unterprozesse existieren. Eine Google-Suche hat mich zu pstreams geführt, ob es was taugt, kann ich nicht sagen. Ich hatte bis jetzt immer das Glück, Qt4 verwenden zu können, wenn Unterprozesse erforderlich waren. Ach ja, wozu ist runtimeerror.hpp da? Dieses Datei scheint nirgends verwendet zu werden, und ist auch sehr merkwürdig. Sie verwendet QString , obwohl Du Qt gar nicht nutzt. Außerdem implementiert die enthaltene Klasse eine clone -Methode. Sowas ist in C++ eher ungewöhnlich, da C++ Kopierkonstruktoren und Konvertierungsoperatoren hat. Ich sage Dir auch ganz ehrlich, dass ich für ein solches Programm nicht C++ genutzt hätte. Meine erste Wahl wäre Python gewesen. Die Sprache ist einfacher, die Standardbibliothek umfangreicher, und es gibt bereits Parser für nahezu jedes verbreitete Format. Mit Python, docutils und pyyaml wäre dieses Programm in einem Bruchteil der Zeilen implementiert.
|
domachine
(Themenstarter)
Anmeldungsdatum: 16. Mai 2007
Beiträge: 562
|
Lunar schrieb: @domachine: Ich weiß nicht, welche C++-Bibliotheken für Unterprozesse existieren. Eine Google-Suche hat mich zu pstreams geführt, ob es was taugt, kann ich nicht sagen. Ich hatte bis jetzt immer das Glück, Qt4 verwenden zu können, wenn Unterprozesse erforderlich waren. Ach ja, wozu ist runtimeerror.hpp da? Dieses Datei scheint nirgends verwendet zu werden, und ist auch sehr merkwürdig. Sie verwendet QString , obwohl Du Qt gar nicht nutzt. Außerdem implementiert die enthaltene Klasse eine clone -Methode. Sowas ist in C++ eher ungewöhnlich, da C++ Kopierkonstruktoren und Konvertierungsoperatoren hat.
Die ist aus Zeiten, als ich noch Qt verwenden wollte. Hab vergessen sie zu löschen. Steht auf meiner Liste.
Genauso wie die process.hpp/.cpp
Ich sage Dir auch ganz ehrlich, dass ich für ein solches Programm nicht C++ genutzt hätte. Meine erste Wahl wäre Python gewesen. Die Sprache ist einfacher, die Standardbibliothek umfangreicher, und es gibt bereits Parser für nahezu jedes verbreitete Format. Mit Python, docutils und pyyaml wäre dieses Programm in einem Bruchteil der Zeilen implementiert.
Ok. Darauf werd ich nächstes mal achten.
Danke für deine Mühe.
Gruß Domi
|
domachine
(Themenstarter)
Anmeldungsdatum: 16. Mai 2007
Beiträge: 562
|
So jetzt sind mal die gröbsten Dinge ausgemerzt.
Es müsste jetzt eigentlich funktioniern. Allerdings müssen nun die boost libraries wie gesagt von Hand installiert werden.
Sie werden nicht mehr mitgeliefert.
Gruß Domi
|
Lunar
Anmeldungsdatum: 17. März 2006
Beiträge: 5792
|
Die Header-Dateien von YAML-CPP solltest Du auch noch entfernen. Auch bei dieser Bibliothek solltest Du Dich auf die Paketverwaltung verlassen. Wenn es dafür kein fertiges Boost-Paket gibt, kannst Du pkg-config verwenden.
|
domachine
(Themenstarter)
Anmeldungsdatum: 16. Mai 2007
Beiträge: 562
|
Lunar schrieb: Die Header-Dateien von YAML-CPP solltest Du auch noch entfernen. Auch bei dieser Bibliothek solltest Du Dich auf die Paketverwaltung verlassen. Wenn es dafür kein fertiges Boost-Paket gibt, kannst Du pkg-config verwenden.
Hach wie ich das liebe. Ich hab jetzt mal versucht das umzusetzten, was ich hier gelesen hab http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries#Pkg-config_.28optional.29 und prompt nach der Ausführung, stürzt CMake kommentarlos mit Seg fault ab. 😀
Naja ich forsch mal noch en bissel.
|
domachine
(Themenstarter)
Anmeldungsdatum: 16. Mai 2007
Beiträge: 562
|
Alles klar habs jetzt so einigermaßen hinbekommen. Laut cmake doc ist das bisher zwar noch nicht optimal. Aber ich denk für den Anfang sollts reichen.
Die yaml-cpp libs werden jetzt also auch auf dem System lokalisiert und nicht mehr im Paket enthalten.
Gruß Domi
|
Lunar
Anmeldungsdatum: 17. März 2006
Beiträge: 5792
|
Ich hätte dafür kein eigenes Modul geschrieben. Schließlich sind das eigentlich nur ein paar Zeilen:
| find_package(PkgConfig REQUIRED)
pkg_search_module(YAMLCPP REQUIRED yaml-cpp)
include_directories(${YAMLCPP_INCLUDE_DIRS})
link_directories(${YAMLCPP_LIB_DIRS})
target_link_libraries(plodder ${YAMLCPP_LIBRARIES})
|
Nothing fancy ...
|
domachine
(Themenstarter)
Anmeldungsdatum: 16. Mai 2007
Beiträge: 562
|
Lunar schrieb: Ich hätte dafür kein eigenes Modul geschrieben. Schließlich sind das eigentlich nur ein paar Zeilen:
| find_package(PkgConfig REQUIRED)
pkg_search_module(YAMLCPP REQUIRED yaml-cpp)
include_directories(${YAMLCPP_INCLUDE_DIRS})
link_directories(${YAMLCPP_LIB_DIRS})
target_link_libraries(plodder ${YAMLCPP_LIBRARIES})
|
Nothing fancy ...
Hab ich auch überlegt, aber in dem Wiki steht, dass man sich nicht nur auf pkg-config verlassen soll. Daher hab ich mal vorsichtshalber ein Modul angelegt um es später einfacherer erweitern zu können. Aber eigentlich hast recht. Ich machs wieder weg.
das mit dem find_package(PkgConfig ...) füg ich noch hinzu.
Gruß Domi
|
domachine
(Themenstarter)
Anmeldungsdatum: 16. Mai 2007
Beiträge: 562
|
Lunar schrieb: Ich hätte dafür kein eigenes Modul geschrieben. Schließlich sind das eigentlich nur ein paar Zeilen:
| find_package(PkgConfig REQUIRED)
pkg_search_module(YAMLCPP REQUIRED yaml-cpp)
include_directories(${YAMLCPP_INCLUDE_DIRS})
link_directories(${YAMLCPP_LIB_DIRS})
target_link_libraries(plodder ${YAMLCPP_LIBRARIES})
|
Nothing fancy ...
Ist es eig noch nötig, die gefundenen lib verzeichnisse zur linker-liste hinzuzufügen? Ich mein schreibt das Modul nicht die kompletten Pfade in die Variablen? Damit wär die folgende Zeile ja unnötig:
link_directories(${YAMLCPP_LIB_DIRS})
|
domachine
(Themenstarter)
Anmeldungsdatum: 16. Mai 2007
Beiträge: 562
|
Also funktioniern tuts auch ohne. Habs grad ausprobiert.
|
Lunar
Anmeldungsdatum: 17. März 2006
Beiträge: 5792
|
Wenn das funktioniert, dann nur, weil die YAML-Bibliothek in einem der Linker-Standardverzeichnisse (e.g. /usr/lib/) liegt. Das muss nicht der Fall sein, diese Zeile sollte also schon enthalten sein.
|
domachine
(Themenstarter)
Anmeldungsdatum: 16. Mai 2007
Beiträge: 562
|
Lunar schrieb: Wenn das funktioniert, dann nur, weil die YAML-Bibliothek in einem der Linker-Standardverzeichnisse (e.g. /usr/lib/) liegt. Das muss nicht der Fall sein, diese Zeile sollte also schon enthalten sein.
Ah ok das ist ein Argument 😀
|
domachine
(Themenstarter)
Anmeldungsdatum: 16. Mai 2007
Beiträge: 562
|
So die neue Version hat nun einige Neuerungen. Unter anderem ein Typensystem. Und eine komfortable Möglichkeit um eine Navigation zu generieren.
Näheres kann man auf der neuen HowTo wiki Page auf der Projekt-Seite nachlesen. http://code.google.com/p/webplodder/wiki/HowTo
|
domachine
(Themenstarter)
Anmeldungsdatum: 16. Mai 2007
Beiträge: 562
|
In der neuen Version 0.2beta2 wurde jetzt der Bug mit den Unterordnern in einem Projekt gefixt. Bisher konnten keine Unterordner in einem Projekt verwendet werden, da der Navigations-Befehl keine relativen Pfade erstellen konnte, die auf die Unterordner passen. Mit der neuen Version, gehört dieses Problem nun der Vergangenheit an.
Have Fun,
Gruß Domi
|
domachine
(Themenstarter)
Anmeldungsdatum: 16. Mai 2007
Beiträge: 562
|
So in der nächsten beta der 0.2 Version, hab ich jetzt mal angefangen den Code aufzuräumen und die unnützen Debug-Ausgaben entfernt. Des weiteren wurde die Laufzeit verbessert. Die war vorher beeinträchtigt, aufgrund mehrfacher, unnützer Sortierung der Navigation.
|