Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
graph_import_export [2009/04/10 11:46] sgasioro |
graph_import_export [2009/04/10 11:47] sgasioro |
||
---|---|---|---|
Linia 8: | Linia 8: | ||
Istnieje duże prawdopodobieństwo, że opisana procedura nie rozwiąże wszystkich problemów, które się pojawią podczas próby doprowadzenia **read_graphml** do działania. | Istnieje duże prawdopodobieństwo, że opisana procedura nie rozwiąże wszystkich problemów, które się pojawią podczas próby doprowadzenia **read_graphml** do działania. | ||
- | Musimy mieć biblioteki EXPAT (http://sourceforge.net/projects/expat/) i ustawic zmienne środowiskowe na odpowiednie ścieżki przed kompilacją bibliotek. | + | Musimy mieć biblioteki EXPAT (http://sourceforge.net/projects/expat/) i ustawić zmienne środowiskowe na odpowiednie ścieżki przed kompilacją bibliotek. |
np. (ważne cudzysłowy):\\ | np. (ważne cudzysłowy):\\ | ||
set EXPAT_INCLUDE="...\Expat 2.0.1\Source\lib"\\ | set EXPAT_INCLUDE="...\Expat 2.0.1\Source\lib"\\ | ||
Linia 16: | Linia 16: | ||
W odpowiednim katalogu ...\boost\libs\graph\build wywołujemy **bjam**. | W odpowiednim katalogu ...\boost\libs\graph\build wywołujemy **bjam**. | ||
Jeśli pojawiło się ostrzeżenie o braku ścieżek EXPAT ustawiamy je ponownie. | Jeśli pojawiło się ostrzeżenie o braku ścieżek EXPAT ustawiamy je ponownie. | ||
- | Sprawdzamy czy nie pojawiły się błędy i jęsli są to je korygujemy (np. nieznaleziono expat.h) ustawiając odpowiednie ścieżki EXPAT, include w kompilatorze itp. | + | Sprawdzamy czy nie pojawiły się błędy i jęsli są to je korygujemy (np. nie znaleziono expat.h) ustawiając odpowiednie ścieżki EXPAT, include w kompilatorze itp. |
- | Jeśli kompilacja się nie powiodłą z powodu braku biblioteki expat.lib otwieramy plik **.../boost/libs/graph/build/Jamfile.v2** i zmieniamy **<find-shared-library>expat** na **<find-shared-library>libexpat** lub inne np. libexpatMT, libexpatw, libexpatwMT w zależności od naszego celu (czy biblioteka wielowątkowa, czy debug itd.). | + | Jeśli kompilacja się nie powiodą z powodu braku biblioteki expat.lib otwieramy plik **.../boost/libs/graph/build/Jamfile.v2** i zmieniamy **<find-shared-library>expat** na **<find-shared-library>libexpat** lub inne np. libexpatMT, libexpatw, libexpatwMT w zależności od naszego celu (czy biblioteka wielowątkowa, czy debug itd.). |
Kolejna przydatną rzeczą jest po linii **<define>BOOST_GRAPH_NO_LIB** dodanie **<define>XML_STATIC**, dzięki czemu nie będziemy musieli mieć pliki **libexpat.dll** przy uruchamianiu programu. | Kolejna przydatną rzeczą jest po linii **<define>BOOST_GRAPH_NO_LIB** dodanie **<define>XML_STATIC**, dzięki czemu nie będziemy musieli mieć pliki **libexpat.dll** przy uruchamianiu programu. | ||
Linia 26: | Linia 26: | ||
Do kompilacji potrzebne jest również dołączenie biblioteki **libexpat.lib**. | Do kompilacji potrzebne jest również dołączenie biblioteki **libexpat.lib**. | ||
- | Jeśli jednak chcemy mieć tylko jedne biblioteki Boost, musimy zbudować całe biblioteki Boost, w tym celu w katalogu **.../boost/** wywołujemy **bjam** z odpowiednimi parametrami (instrukcja w Getting Started). Pamietajmy o ustwieniu zmiennych **EXPAT_INCLUDE** i **EXPAT_LIBPATH** przed wywołaniem **bjam**. | + | Jeśli jednak chcemy mieć tylko jedne biblioteki Boost, musimy zbudować całe biblioteki Boost, w tym celu w katalogu **.../boost/** wywołujemy **bjam** z odpowiednimi parametrami (instrukcja w Getting Started). Pamiętajmy o ustawieniu zmiennych **EXPAT_INCLUDE** i **EXPAT_LIBPATH** przed wywołaniem **bjam**. |
Dobrze jest jednak najpierw skompilować samą bibliotekę Graph by zobaczyć czy kompiluje się bez błędów, ponieważ jeśli pojawią się błędy np. związane z biblioteką EXPAT, biblioteki Boost zbudują się bez obsługi GraphML readera. | Dobrze jest jednak najpierw skompilować samą bibliotekę Graph by zobaczyć czy kompiluje się bez błędów, ponieważ jeśli pojawią się błędy np. związane z biblioteką EXPAT, biblioteki Boost zbudują się bez obsługi GraphML readera. | ||
Linia 32: | Linia 32: | ||
====== Ograniczenia ====== | ====== Ograniczenia ====== | ||
- | Wczytywanie różnych grafów, np. z plików znalezionych w internecie, wymaga określenia różnych parametrów, co w praktyce wiąże się z zajrzeniem do pliku z grafem i ręczne określenie np. co jest głownym identyfikatorem węzła lub jakie każdy węzeł lub krawędź ma właściwości (np. "name", "color", "weight"). Nie ma jednej funkcji do wczytania dowolnego grafu, a przynajmniej nie jest taka opisana w dokumentacji. Jest to z góry narzucone przez niefortuny sposób opisu grafów w tych bibliotekach, który zakłada, że atrybuty grafu będą znane podczas kompilacji. | + | Wczytywanie różnych grafów, np. z plików znalezionych w internecie, wymaga określenia różnych parametrów, co w praktyce wiąże się z zajrzeniem do pliku z grafem i ręczne określenie np. co jest głownym identyfikatorem węzła lub jakie każdy węzeł lub krawędź ma właściwości (np. "name", "color", "weight"). Nie ma jednej funkcji do wczytania dowolnego grafu, a przynajmniej nie ma takiej opisanej w dokumentacji. Jest to z góry narzucone przez niefortunny sposób opisu grafów w tych bibliotekach, który zakłada, że atrybuty grafu będą znane podczas kompilacji. |
Jest to wielka wada, gdyż praktycznie uniemożliwia wykorzystanie tej biblioteki do wczytywania grafów stworzonych przez innych. | Jest to wielka wada, gdyż praktycznie uniemożliwia wykorzystanie tej biblioteki do wczytywania grafów stworzonych przez innych. |