Bug report #8575
undefined references building master
Status: | Closed | ||
---|---|---|---|
Priority: | Normal | ||
Assignee: | Radim Blazek | ||
Category: | Build/Install | ||
Affected QGIS version: | master | Regression?: | No |
Operating System: | Easy fix?: | No | |
Pull Request or Patch supplied: | No | Resolution: | |
Crashes QGIS or corrupts data: | No | Copied to github as #: | 17318 |
Description
CMakeFiles/qgis_app.dir/main.cpp.o: In function `dumpBacktrace': /usr/src/qgis/qgis/src/app/main.cpp:229: undefined reference to `QgsLogger::debug(QString const&, int, char const*, char const*, int)' /usr/src/qgis/qgis/src/app/main.cpp:244: undefined reference to `QgsLogger::debug(QString const&, int, char const*, char const*, int)' /usr/src/qgis/qgis/src/app/main.cpp:258: undefined reference to `QgsLogger::debug(QString const&, int, char const*, char const*, int)' CMakeFiles/qgis_app.dir/main.cpp.o: In function `myMessageOutput(QtMsgType, char const*)': /usr/src/qgis/qgis/src/app/main.cpp:366: undefined reference to `QgsMessageLog::logMessage(QString, QString, QgsMessageLog::MessageLevel)' /usr/src/qgis/qgis/src/app/main.cpp:374: undefined reference to `QgsMessageLog::logMessage(QString, QString, QgsMessageLog::MessageLevel)' CMakeFiles/qgis_app.dir/main.cpp.o: In function `main': /usr/src/qgis/qgis/src/app/main.cpp:393: undefined reference to `QgsLogger::debug(QString const&, int, char const*, char const*, int)' /usr/src/qgis/qgis/src/app/main.cpp:403: undefined reference to `qInstallMsgHandler(void (*)(QtMsgType, char const*))' /usr/src/qgis/qgis/src/app/main.cpp:581: undefined reference to `QgsLogger::debug(QString const&, int, char const*, char const*, int)' /usr/src/qgis/qgis/src/app/main.cpp:599: undefined reference to `QFileInfo::QFileInfo(QString const&)' /usr/src/qgis/qgis/src/app/main.cpp:599: undefined reference to `QFileInfo::absoluteFilePath() const' /usr/src/qgis/qgis/src/app/main.cpp:599: undefined reference to `QDir::convertSeparators(QString const&)' /usr/src/qgis/qgis/src/app/main.cpp:599: undefined reference to `QString::operator=(QString const&)' /usr/src/qgis/qgis/src/app/main.cpp:599: undefined reference to `QFileInfo::~QFileInfo()' /usr/src/qgis/qgis/src/app/main.cpp:603: undefined reference to `QString::toInt(bool*, int) const' /usr/src/qgis/qgis/src/app/main.cpp:607: undefined reference to `QString::toInt(bool*, int) const' /usr/src/qgis/qgis/src/app/main.cpp:619: undefined reference to `QFileInfo::QFileInfo(QString const&)' /usr/src/qgis/qgis/src/app/main.cpp:619: undefined reference to `QFileInfo::absoluteFilePath() const' /usr/src/qgis/qgis/src/app/main.cpp:619: undefined reference to `QDir::convertSeparators(QString const&)' /usr/src/qgis/qgis/src/app/main.cpp:619: undefined reference to `QString::operator=(QString const&)' /usr/src/qgis/qgis/src/app/main.cpp:619: undefined reference to `QFileInfo::~QFileInfo()' /usr/src/qgis/qgis/src/app/main.cpp:656: undefined reference to `QString::arg(QString const&, int, QChar const&) const' /usr/src/qgis/qgis/src/app/main.cpp:656: undefined reference to `QgsLogger::debug(QString const&, int, char const*, char const*, int)' /usr/src/qgis/qgis/src/app/main.cpp:663: undefined reference to `QgsLogger::debug(QString const&, int, char const*, char const*, int)' /usr/src/qgis/qgis/src/app/main.cpp:670: undefined reference to `QString::arg(QString const&, int, QChar const&) const'
and many more.
This is after git pull && make
History
#1 Updated by Marco Hugentobler over 11 years ago
- Assignee set to Radim Blazek
#2 Updated by Radim Blazek over 11 years ago
For me it compiles, Jenkins also says last successful 135ef365693f http://jenkins.linfiniti.com/job/QGIS/lastSuccessfulBuild/
i.e. after my commits.
I have not touched src/app/main.cpp, so I have no idea, for now.
#3 Updated by Matthias Kuhn over 11 years ago
I suspect it's related to the new shared lib.
At least reverting 250df51994ab7c938d5f2a27f2be843b89d97803 makes it link again here
#4 Updated by Radim Blazek over 11 years ago
I have added shared lib for classes used in main app, so that they can be used in tests. At this moment however, the main app is not using that lib and builds as before.
#5 Updated by Radim Blazek over 11 years ago
I know probably, src/app/main.cpp must be excluded from that lib.
#6 Updated by Jürgen Fischer over 11 years ago
Radim Blazek wrote:
I know probably, src/app/main.cpp must be excluded from that lib.
2c2d675 fixes it, by making it a static library, excluding main() and disabling the call to qgisCrashDump() in QGisApp. Creating a DLL from app probably needs a lot more work as each exported symbol need to marked (just like in core, gui and analysis...).
#7 Updated by Radim Blazek over 11 years ago
Thanks Jef and sorry for problems.
Should I move qgisCrashDump() from main.cpp to static QgisApp::qgisCrashDump()?
#8 Updated by Sandro Santilli over 11 years ago
Still not completely fixed as of 2c2d6757 I still get:
../../../src/app/libqgis_app.a(qgisapp.cpp.o): In function `messageOutputViewer_': /usr/src/qgis/qgis/src/app/qgisapp.cpp:347: undefined reference to `QgsMessageViewer::QgsMessageViewer(QWidget*, QFlags<Qt::WindowType>, bool)' ../../../src/app/libqgis_app.a(qgisapp.cpp.o): In function `QgisApp::validateSrs(QgsCoordinateReferenceSystem&)': /usr/src/qgis/qgis/src/app/qgisapp.cpp:379: undefined reference to `QgsGenericProjectionSelector::QgsGenericProjectionSelector(QWidget*, QFlags<Qt::WindowType>)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:380: undefined reference to `QgsGenericProjectionSelector::setMessage(QString)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:382: undefined reference to `QgsMapCanvas::mapRenderer()' /usr/src/qgis/qgis/src/app/qgisapp.cpp:387: undefined reference to `QgsGenericProjectionSelector::setSelectedCrsId(long)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:396: undefined reference to `QgsGenericProjectionSelector::selectedCrsId()' /usr/src/qgis/qgis/src/app/qgisapp.cpp:397: undefined reference to `QgsGenericProjectionSelector::selectedAuthId()' /usr/src/qgis/qgis/src/app/qgisapp.cpp:398: undefined reference to `QgsGenericProjectionSelector::selectedAuthId()' /usr/src/qgis/qgis/src/app/qgisapp.cpp:409: undefined reference to `QgsMapCanvas::mapRenderer()' ../../../src/app/libqgis_app.a(qgisapp.cpp.o): In function `QgisApp': /usr/src/qgis/qgis/src/app/qgisapp.cpp:489: undefined reference to `QgsMapCanvas::QgsMapCanvas(QWidget*, char const*)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:502: undefined reference to `QgsMessageBar::QgsMessageBar(QWidget*)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:524: undefined reference to `QgsMapCanvas::freeze(bool)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:566: undefined reference to `QgsMessageLogViewer::QgsMessageLogViewer(QStatusBar*, QWidget*, QFlags<Qt::WindowType>)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:605: undefined reference to `QgsCredentialDialog::QgsCredentialDialog(QWidget*, QFlags<Qt::WindowType>)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:699: undefined reference to `QgsMapCanvas::freeze(bool)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:700: undefined reference to `QgsMapCanvas::clearExtentHistory()' /usr/src/qgis/qgis/src/app/qgisapp.cpp:703: undefined reference to `QgsMapCanvas::mapRenderer()' /usr/src/qgis/qgis/src/app/qgisapp.cpp:754: undefined reference to `QgsMapCanvas::QgsMapCanvas(QWidget*, char const*)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:755: undefined reference to `QgsMapCanvas::freeze(bool)' ../../../src/app/libqgis_app.a(qgisapp.cpp.o): In function `QgisApp::dropEvent(QDropEvent*)': /usr/src/qgis/qgis/src/app/qgisapp.cpp:837: undefined reference to `QgsMapCanvas::freeze(bool)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:867: undefined reference to `QgsMapCanvas::freeze(bool)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:868: undefined reference to `QgsMapCanvas::refresh()' ../../../src/app/libqgis_app.a(qgisapp.cpp.o): In function `QgisApp::showStyleManagerV2()': /usr/src/qgis/qgis/src/app/qgisapp.cpp:1159: undefined reference to `QgsStyleV2ManagerDialog::QgsStyleV2ManagerDialog(QgsStyleV2*, QWidget*)' ../../../src/app/libqgis_app.a(qgisapp.cpp.o): In function `QgisApp::createStatusBar()': /usr/src/qgis/qgis/src/app/qgisapp.cpp:1595: undefined reference to `QgsScaleComboBox::QgsScaleComboBox(QWidget*)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:1639: undefined reference to `QgsMapCanvas::mapRenderer()' ../../../src/app/libqgis_app.a(qgisapp.cpp.o): In function `QgisApp::setupConnections()': /usr/src/qgis/qgis/src/app/qgisapp.cpp:1878: undefined reference to `QgsMapCanvas::mapRenderer()' /usr/src/qgis/qgis/src/app/qgisapp.cpp:1880: undefined reference to `QgsMapCanvas::mapRenderer()' /usr/src/qgis/qgis/src/app/qgisapp.cpp:1882: undefined reference to `QgsMapCanvas::mapRenderer()' ../../../src/app/libqgis_app.a(qgisapp.cpp.o): In function `QgisApp::createCanvasTools()': /usr/src/qgis/qgis/src/app/qgisapp.cpp:1943: undefined reference to `QgsMapToolZoom::QgsMapToolZoom(QgsMapCanvas*, bool)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:1944: undefined reference to `QgsMapTool::setAction(QAction*)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:1945: undefined reference to `QgsMapToolZoom::QgsMapToolZoom(QgsMapCanvas*, bool)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:1946: undefined reference to `QgsMapTool::setAction(QAction*)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:1947: undefined reference to `QgsMapToolPan::QgsMapToolPan(QgsMapCanvas*)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:1948: undefined reference to `QgsMapTool::setAction(QAction*)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:1954: undefined reference to `QgsMapTool::setAction(QAction*)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:1958: undefined reference to `QgsMapTool::setAction(QAction*)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:1960: undefined reference to `QgsMapTool::setAction(QAction*)' /usr/src/qgis/qgis/src/app/qgisapp.cpp:1962: undefined reference to `QgsMapTool::setAction(QAction*)' ../../../src/app/libqgis_app.a(qgisapp.cpp.o):/usr/src/qgis/qgis/src/app/qgisapp.cpp:1964: more undefined references to `QgsMapTool::setAction(QAction*)' follow
and more later..
#9 Updated by Radim Blazek over 11 years ago
Try with 0b1895463
#10 Updated by Sandro Santilli over 11 years ago
- % Done changed from 0 to 100
- Resolution set to fixed
Yep, that fixed it. Thanks
#11 Updated by Giovanni Manghi over 11 years ago
- Status changed from Open to Closed
#12 Updated by Radim Blazek over 11 years ago
- Status changed from Closed to Reopened
Not yet completely fixed, call to qgisCrashDump() from QgisApp is still disabled.
#13 Updated by Radim Blazek about 11 years ago
- Resolution deleted (
fixed) - Status changed from Reopened to Closed
Full fix by Jef in 0a1d44fc