Registered Member
|
I am trying to build the latest version ( it is in fact the first time I ever build it) of Marble on windows XP. Qt version is the latest.
The cmake flag used are -DQTONLY=ON -DCMAKE_BUILD_TYPE=RELEASE Everything goes smoothly until 99% is done. At this point during the linking of TestGeoSceneWriter the following linker error occurs:(see at end of post) These errors are unresolved external which are functions of the classes GeoSceneTexture, GeoSceneVector, GeoSceneSection and GeoSceneItem. Any idea to resolve the issue. Thanks. Thierry "C:\Program Files\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\TestGeoSceneW riter.dir/objects.a C:\Qt\2010.05\mingw\bin\ar.exe cr CMakeFiles\TestGeoSceneWriter.dir/objects.a @C MakeFiles\TestGeoSceneWriter.dir\objects1.rsp C:\Qt\2010.05\mingw\bin\g++.exe -O3 -DNDEBUG -Wl,--whole-archive CMakeFiles\TestGeoSceneWriter.dir/objects.a -Wl,--no-whole-archive -o TestGeoSceneWriter.exe -Wl,--out-implib,libTestGeoSceneWriter.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -LC:\Qt\2010.05\qt\lib -LM:\_Exchange\Qt\Marble-Build\src\lib C:\Qt\2010.05\qt\lib\libqtmain.a C:\Qt\2010.05\qt\lib\libQtCore4.a C:\Qt\2010.05\qt\lib\libQtGui4.a C:\Qt\2010.05\qt\lib\libQtTest4.a ..\src\lib\libmarblewidget.dll.a C:\Qt\2010.05\qt\lib\libQtCore4.a C:\Qt\2010.05\qt\lib\libQtGui4.a C:\Qt\2010.05\qt\lib\libQtXml4.a C:\Qt\2010.05\qt\lib\libQtSvg4.a C:\Qt\2010.05\qt\lib\libQtNetwork4.a C:\Qt\2010.05\qt\lib\libQtScript4.a C:\Qt\2010.05\qt\lib\libqtmain.a C:\Qt\2010.05\qt\lib\libQtWebKit4.a -lws2_32 -limm32 -lwinmm -lkernel32 (add library file) -luser32 -lgdi32 -lwinspool -lshell32 -lole32 (add library file) -loleaut32 -luuid -lcomdlg32 -ladvapi32 (add library file) CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x4a0): undefined reference to `Marble::GeoSceneTexture::GeoSceneTexture(QString const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x4dc): undefined reference to `Marble::GeoSceneTexture::setSourceDir(QString const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x54a): undefined reference to `Marble::GeoSceneTexture::setProjection(Marble::GeoSceneTexture::Projection)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x585): undefined reference to `Marble::GeoSceneTexture::addDownloadUrl(QUrl const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x5e1): undefined reference to `Marble::GeoSceneTexture::addDownloadUrl(QUrl const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x61b): undefined reference to `Marble::GeoSceneTexture::addDownloadPolicy(Marble::DownloadUsage, int)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x633): undefined reference to `Marble::GeoSceneTexture::addDownloadPolicy(Marble::DownloadUsage, int)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x643): undefined reference to `Marble::GeoSceneTexture::setMaximumTileLevel(int)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x653): undefined reference to `Marble::GeoSceneTexture::setLevelZeroColumns(int)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x663): undefined reference to `Marble::GeoSceneTexture::setLevelZeroRows(int)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x996): undefined reference to `Marble::GeoSceneVector::GeoSceneVector(QString const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x9d2): undefined reference to `Marble::GeoSceneVector::setFeature(QString const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoScene Writer.cpp:(.text+0xa4b): undefined reference to `Marble::GeoSceneVector::setSourceFile(QString const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0xad5): undefined reference to `Marble::GeoSceneVector::pen()const' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0xdfc): undefined reference to `Marble::GeoSceneSection::GeoSceneSection(QString const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0xe44): undefined reference to `Marble::GeoSceneSection::setHeading(QString const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0xeb3): undefined reference to `Marble::GeoSceneItem::GeoSceneItem(QString const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0xefb): undefined reference to `Marble::GeoSceneItem::setText(QString const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0xf22): undefined reference to `Marble::GeoSceneItem::icon()' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0xf83): undefined reference to `Marble::GeoSceneSection::addItem(Marble::GeoSceneItem*)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0xfc0): undefined reference to `Marble::GeoSceneItem::GeoSceneItem(QString const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x1008): undefined reference to `Marble::GeoSceneItem::setText(QString const&)' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x102f): undefined reference to `Marble::GeoSceneItem::icon()' CMakeFiles\TestGeoSceneWriter.dir/objects.a(TestGeoSceneWriter.obj):TestGeoSceneWriter.cpp:(.text+0x10ad): undefined reference to `Marble::GeoSceneSection::addItem(Marble::GeoSceneItem*)' collect2: ld returned 1 exit status mingw32-make[2]: *** [tests/TestGeoSceneWriter.exe] Error 1 mingw32-make[2]: Leaving directory `M:/_Exchange/Qt/Marble-Build' mingw32-make[1]: *** [tests/CMakeFiles/TestGeoSceneWriter.dir/all] Error 2 mingw32-make[1]: Leaving directory `M:/_Exchange/Qt/Marble-Build' mingw32-make: *** [all] Error 2 |
Administrator
|
This could have been a transient error in Marble's build system, so try updating your sources and building again.
KDE Sysadmin
[img]content/bcooksley_sig.png[/img] |
KDE Developer
|
Hi,
Looks like the tests don't get properly built on the Windows platform. I've also heard this from Christophe, our Winodws packager in the Marble team just yesterday. We'll try and fix it as soon as possible. Could you please send all your Marble questions to our mailing list marble-devel@kde.org ? This will ensure that you get proper help. Thanks! Best Regards, Torsten |
Registered Member
|
OK Thank you for your replies
I'll wait and see For now I have just emptied the body of TestGeoSceneWriter ! |
KDE Developer
|
I think we should either disable building tests on Windows or enable hidden visibility in the Qt only version. Otherwise errors like this easily slip through because none of us uses Windows regularly. Currently the KDE version enables -fvisibility=hidden but not the tests, while the Qt-Only build does the reverse. Both works fine on Linux, but Windows implies -fvisibility=hidden, leading to undefined references in the not exported classes used in the tests.
Maybe we can also disable tests based on the visibility setting. I don't like to export some classes just to be able to use them for tests. That makes it harder to keep ABI in future releases. To contribute something more constructive: Passing -DBUILD_MARBLE_TESTS=OFF to cmake should disable the build of the tests and work around the issue. |
Registered users: Bing [Bot], claydoh, Google [Bot], rblackwell