Делаю вот так в консольном приложении:
QString sss = QLibraryInfo::location(QLibraryInfo::PrefixPath);
qDebug() << sss;
если работать без qt.conf , то на консоли выскакивает :
-> /opt/toolchains/arm-iwmmxt-linux-gnu/qtopia/qtopiacore/target
если работать с qt.conf c Prefix = /mmc/mmca1 , то на консоли показывает:
-> /mmc/mmca1
т.е. механизм вполне рабочий.
Что ты так привязался к этому механизму? Я не понимаю, что ты делаешь. Я вижу, что ты придумал какое-то изысканное извращение и рассказываешь, как с ним справиться.
По поводу извращений: ты сделал какую-то хрень. Так как я в школе прогуливал уроки телепатии, я не в курсе, что ты делал. Если бы ты заглянул в исходники (src/server/main/main.cpp), ты бы увидел:
Код
static void check_prefix()
{
// Construct a string with the path to the binary that we'll expect to see at runtime
QString prefix_bin = QDir(QString("%1/bin/%2").arg(QLibraryInfo::location(QLibraryInfo::PrefixPath)).arg(QTOPIA_TARGET)).absolutePath();
QString prefix_check = QDir(prefix_bin).canonicalPath(); // handle symlinks
// Get the path to the currently running binary
QString proc_check = QDir(QString("/proc/%1/exe").arg(getpid())).canonicalPath();
if ( proc_check.isEmpty() )
proc_check = QString("CANNOT READ /proc/%1/exe").arg(getpid());
if ( prefix_check != proc_check ) {
// Figure out what the prefix should be based on the location of the currently running binary
QString proc_prefix = QDir(QString("%1/../..").arg(proc_check)).canonicalPath();
qWarning() << "**********************************************************" << endl
<< "* ERROR: Expecting this binary to be located in" << endl
<< "* " << prefix_bin.toLocal8Bit().constData() << endl
<< "* but it is being run from" << endl
<< "* " << proc_check.toLocal8Bit().constData() << endl
<< "*" << endl
<< "* This generally indicates that you have specified the wrong" << endl
<< "* value for -prefix when configuring Qtopia. Based on the" << endl
<< "* location of this binary, you should be using a prefix of" << endl
<< "* " << proc_prefix.toLocal8Bit().constData() << endl
<< "**********************************************************" << endl;
}
}
{
// Construct a string with the path to the binary that we'll expect to see at runtime
QString prefix_bin = QDir(QString("%1/bin/%2").arg(QLibraryInfo::location(QLibraryInfo::PrefixPath)).arg(QTOPIA_TARGET)).absolutePath();
QString prefix_check = QDir(prefix_bin).canonicalPath(); // handle symlinks
// Get the path to the currently running binary
QString proc_check = QDir(QString("/proc/%1/exe").arg(getpid())).canonicalPath();
if ( proc_check.isEmpty() )
proc_check = QString("CANNOT READ /proc/%1/exe").arg(getpid());
if ( prefix_check != proc_check ) {
// Figure out what the prefix should be based on the location of the currently running binary
QString proc_prefix = QDir(QString("%1/../..").arg(proc_check)).canonicalPath();
qWarning() << "**********************************************************" << endl
<< "* ERROR: Expecting this binary to be located in" << endl
<< "* " << prefix_bin.toLocal8Bit().constData() << endl
<< "* but it is being run from" << endl
<< "* " << proc_check.toLocal8Bit().constData() << endl
<< "*" << endl
<< "* This generally indicates that you have specified the wrong" << endl
<< "* value for -prefix when configuring Qtopia. Based on the" << endl
<< "* location of this binary, you should be using a prefix of" << endl
<< "* " << proc_prefix.toLocal8Bit().constData() << endl
<< "**********************************************************" << endl;
}
}
То есть, кутопия просто НЕ запустится, если в префиксе что-то левое.