On Jul 14, 2014, at 10:09 PM, Ian Wadham <[email protected]> wrote:
> On 15/07/2014, at 10:56 AM, Mark Brethen wrote: >> On Jul 14, 2014, at 6:22 PM, Mark Brethen <[email protected]> wrote: >> >>> I'm testing the FreeCAD build and discovered that the help menu returns the >>> error message: "Unable to launch Qt Assistant >>> (/opt/local/bin/Assistant.app/Contents/MacOS/Assistant)". Launching Qt >>> Assistant is done in the function startAssistant() which is found in >>> src/Gui/Assistant.cpp. The following lines get the name of the executable >>> and the doc path: >>> >>> #ifdef Q_OS_WIN >>> QString app; >>> app = QDir::toNativeSeparators(QString::fromUtf8 >>> (App::GetApplication().GetHomePath()) + QLatin1String("bin/")); > >>> #else > As a quick and dirty fix, you could include here: > #ifdef Q_OS_MAC > QString app = "/Applications/MacPorts/Qt4/"; > #else >>> QString app = QLibraryInfo::location(QLibraryInfo::BinariesPath) + >>> QDir::separator(); > #endif >>> #endif >>> #if !defined(Q_OS_MAC) >>> app += QLatin1String("assistant"); >>> #else >>> app += QLatin1String("Assistant.app/Contents/MacOS/Assistant"); >>> #endif >>> >>> QString exe = >>> QString::fromUtf8(App::GetApplication().getExecutableName()); >>> QString doc = >>> QString::fromUtf8(App::Application::getHelpDir().c_str()); >>> QString qhc = doc + exe.toLower() + QLatin1String(".qhc"); >>> >>> I'm not that familiar with c++ but I believe >>> 'QLibraryInfo::location(QLibraryInfo::BinariesPath) + QDir::separator()' is >>> setting the variable 'app' to /opt/local/bin. This line needs to be patched >>> so that it finds /Applications/Macports/Qt4. How is a string used as a file >>> path In c++? >> >> In other words, how is the macports variable included in the patch? >> >> QString app = ${applications_dir} + QLatin1String("Qt/"); > > Note the extra #endif. > > I don't know the "official" way to obtain the applications bundle path from > Qt4-Mac. > Using the literal path as above will get you the "standard" MacPorts bundle > path > for Qt4 apps, if and only if you have used MacPorts to install the apps and > used > the default MacPorts locations. So it will get you off the ground, but it is > in no way > "general" to any installation of FreeCAD on any Apple OS X host machine. > > Cheers, Ian W. > Since this bit of code pertains only to FreeCAD built with macports, this post-patch works for me: post-patch { reinplace "s|QLibraryInfo::location.*|QLatin1String\(\"${applications_dir}/Qt4/\"\);|" \ ${worksrcpath}/src/Gui/Assistant.cpp } I also discovered that macports' Qt4-mac port does not build with sqlite support and added the plugin as a run dependency: depends_run port:qt4-mac-sqlite3-plugin Mark _______________________________________________ macports-dev mailing list [email protected] https://lists.macosforge.org/mailman/listinfo/macports-dev
