Greetings, I'm new to qt-creator and would like to build from the source on linux but I am experiencing a curious linker error. I get the same error on the 4.3, 4.4, 4.5, and master git branches. The error message looks like this:
.obj/release-shared/projectexplorer.o: In function `ProjectExplorer::ProjectExplorerPlugin::initialize(QStringList const&, QString*)': projectexplorer.cpp:(.text+0x216f): undefined reference to `ProjectExplorer::Internal::WinDebugInterface::WinDebugInterface(QObject*)' projectexplorer.cpp:(.text+0x2196): undefined reference to `ProjectExplorer::Internal::MsvcToolChainFactory::MsvcToolChainFactory()' collect2: error: ld returned 1 exit status I would be happy to provide the usual system details like OS, compiler, Qt version, and so on but I don't think its relevant. The error is quite easy to understand. The projectexplorer.pro file lists cpp files that are only built on windows but code from the corresponding headers is referenced on any OS. Here is a change that I made to fix the issue. $ git diff diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 3b7be3a..ce4386e 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -505,14 +505,17 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er #endif // Add ToolChainFactories: - if (Utils::HostOsInfo::isWindowsHost()) { - addAutoReleasedObject(new WinDebugInterface); - addAutoReleasedObject(new MsvcToolChainFactory); - } else { - addAutoReleasedObject(new LinuxIccToolChainFactory); - } - if (!Utils::HostOsInfo::isMacHost()) - addAutoReleasedObject(new MingwToolChainFactory); // Mingw offers cross-compiling to windows +#ifdef Q_OS_WIN + addAutoReleasedObject(new WinDebugInterface); + addAutoReleasedObject(new MsvcToolChainFactory); +#else + addAutoReleasedObject(new LinuxIccToolChainFactory); +#endif + +#ifndef Q_OS_MAC + addAutoReleasedObject(new MingwToolChainFactory); // Mingw offers cross-compiling to windows +#endif + addAutoReleasedObject(new GccToolChainFactory); addAutoReleasedObject(new ClangToolChainFactory); addAutoReleasedObject(new CustomToolChainFactory); I merely substituted a runtime branch on the OS with a compile time branch on the OS. After this, it builds and runs fine as far as I can tell. I probably should just submit a bug report and be done but the fact that this issue exists for me in all the recent release branches made me want to post a message on this forum and see what people think. I must be doing something unusual right? I can't be the only one who wants to build on linux. Thanks for the great project! Frank
_______________________________________________ Qt-creator mailing list Qt-creator@qt-project.org http://lists.qt-project.org/mailman/listinfo/qt-creator