global/qlibraryinfo.cpp

Source codeSwitch to Preprocessed file
LineSource CodeCoverage
1/**************************************************************************** -
2** -
3** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -
4** Contact: http://www.qt-project.org/legal -
5** -
6** This file is part of the QtCore module of the Qt Toolkit. -
7** -
8** $QT_BEGIN_LICENSE:LGPL$ -
9** Commercial License Usage -
10** Licensees holding valid commercial Qt licenses may use this file in -
11** accordance with the commercial license agreement provided with the -
12** Software or, alternatively, in accordance with the terms contained in -
13** a written agreement between you and Digia. For licensing terms and -
14** conditions see http://qt.digia.com/licensing. For further information -
15** use the contact form at http://qt.digia.com/contact-us. -
16** -
17** GNU Lesser General Public License Usage -
18** Alternatively, this file may be used under the terms of the GNU Lesser -
19** General Public License version 2.1 as published by the Free Software -
20** Foundation and appearing in the file LICENSE.LGPL included in the -
21** packaging of this file. Please review the following information to -
22** ensure the GNU Lesser General Public License version 2.1 requirements -
23** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -
24** -
25** In addition, as a special exception, Digia gives you certain additional -
26** rights. These rights are described in the Digia Qt LGPL Exception -
27** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -
28** -
29** GNU General Public License Usage -
30** Alternatively, this file may be used under the terms of the GNU -
31** General Public License version 3.0 as published by the Free Software -
32** Foundation and appearing in the file LICENSE.GPL included in the -
33** packaging of this file. Please review the following information to -
34** ensure the GNU General Public License version 3.0 requirements will be -
35** met: http://www.gnu.org/copyleft/gpl.html. -
36** -
37** -
38** $QT_END_LICENSE$ -
39** -
40****************************************************************************/ -
41 -
42#include "qdir.h" -
43#include "qfile.h" -
44#include "qsettings.h" -
45#include "qlibraryinfo.h" -
46#include "qscopedpointer.h" -
47 -
48#ifdef QT_BUILD_QMAKE -
49QT_BEGIN_NAMESPACE -
50extern QString qt_libraryInfoFile(); -
51QT_END_NAMESPACE -
52#elif defined(QT_BOOTSTRAPPED) -
53QString qt_libraryInfoFile() -
54{ -
55 QString qmakeAbsoluteLocation = QLatin1String(QT_QMAKE_LOCATION); -
56 if (!qmakeAbsoluteLocation.isEmpty()) -
57 return QDir(QFileInfo(qmakeAbsoluteLocation).absolutePath()).filePath(QLatin1String("qt.conf")); -
58 return QString(); -
59} -
60#else -
61# include "qcoreapplication.h" -
62#endif -
63 -
64#ifdef Q_OS_MAC -
65# include "private/qcore_mac_p.h" -
66#endif -
67 -
68#include "qconfig.cpp" -
69 -
70QT_BEGIN_NAMESPACE -
71 -
72extern void qDumpCPUFeatures(); // in qsimd.cpp -
73 -
74#ifndef QT_NO_SETTINGS -
75 -
76struct QLibrarySettings -
77{ -
78 QLibrarySettings(); -
79 QScopedPointer<QSettings> settings; -
80#ifdef QT_BOOTSTRAPPED -
81 bool haveEffectivePaths; -
82 bool havePaths; -
83#endif -
84}; -
85Q_GLOBAL_STATIC(QLibrarySettings, qt_library_settings)
never executed: delete x;
executed: return thisGlobalStatic.pointer.load();
Execution Count:351
partially evaluated: !thisGlobalStatic.pointer.testAndSetOrdered(0, x)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:25
evaluated: !thisGlobalStatic.pointer.load()
TRUEFALSE
yes
Evaluation Count:25
yes
Evaluation Count:326
partially evaluated: !thisGlobalStatic.destroyed
TRUEFALSE
yes
Evaluation Count:25
no
Evaluation Count:0
0-351
86 -
87class QLibraryInfoPrivate -
88{ -
89public: -
90 static QSettings *findConfiguration(); -
91#ifndef QT_BOOTSTRAPPED -
92 static void cleanup() -
93 { -
94 QLibrarySettings *ls = qt_library_settings();
executed (the execution status of this line is deduced): QLibrarySettings *ls = qt_library_settings();
-
95 if (ls)
partially evaluated: ls
TRUEFALSE
yes
Evaluation Count:193
no
Evaluation Count:0
0-193
96 ls->settings.reset(0);
executed: ls->settings.reset(0);
Execution Count:193
193
97 }
executed: }
Execution Count:193
193
98#else -
99 static bool haveGroup(QLibraryInfo::PathGroup group) -
100 { -
101 QLibrarySettings *ls = qt_library_settings(); -
102 return ls ? (group == QLibraryInfo::EffectivePaths -
103 ? ls->haveEffectivePaths : ls->havePaths) : false; -
104 } -
105#endif -
106 static QSettings *configuration() -
107 { -
108 QLibrarySettings *ls = qt_library_settings();
executed (the execution status of this line is deduced): QLibrarySettings *ls = qt_library_settings();
-
109 return ls ? ls->settings.data() : 0;
executed: return ls ? ls->settings.data() : 0;
Execution Count:158
158
110 } -
111}; -
112 -
113QLibrarySettings::QLibrarySettings() -
114 : settings(QLibraryInfoPrivate::findConfiguration()) -
115{ -
116#ifndef QT_BOOTSTRAPPED -
117 qAddPostRoutine(QLibraryInfoPrivate::cleanup);
executed (the execution status of this line is deduced): qAddPostRoutine(QLibraryInfoPrivate::cleanup);
-
118 bool haveEffectivePaths;
executed (the execution status of this line is deduced): bool haveEffectivePaths;
-
119 bool havePaths;
executed (the execution status of this line is deduced): bool havePaths;
-
120#endif -
121 if (settings) {
partially evaluated: settings
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:25
0-25
122 // This code needs to be in the regular library, as otherwise a qt.conf that -
123 // works for qmake would break things for dynamically built Qt tools. -
124 QStringList children = settings->childGroups();
never executed (the execution status of this line is deduced): QStringList children = settings->childGroups();
-
125 haveEffectivePaths = children.contains(QLatin1String("EffectivePaths"));
never executed (the execution status of this line is deduced): haveEffectivePaths = children.contains(QLatin1String("EffectivePaths"));
-
126 // Backwards compat: an existing but empty file is claimed to contain the Paths section. -
127 havePaths = !haveEffectivePaths || children.contains(QLatin1String("Paths"));
never evaluated: !haveEffectivePaths
never evaluated: children.contains(QLatin1String("Paths"))
0
128#ifndef QT_BOOTSTRAPPED -
129 if (!havePaths)
never evaluated: !havePaths
0
130 settings.reset(0);
never executed: settings.reset(0);
0
131#else -
132 } else { -
133 haveEffectivePaths = false; -
134 havePaths = false; -
135#endif -
136 }
never executed: }
0
137}
executed: }
Execution Count:25
25
138 -
139QSettings *QLibraryInfoPrivate::findConfiguration() -
140{ -
141 QString qtconfig = QStringLiteral(":/qt/etc/qt.conf");
executed (the execution status of this line is deduced): QString qtconfig = QString::fromUtf8("" ":/qt/etc/qt.conf" "", sizeof(":/qt/etc/qt.conf") - 1);
-
142#ifdef QT_BOOTSTRAPPED -
143 if(!QFile::exists(qtconfig)) -
144 qtconfig = qt_libraryInfoFile(); -
145#else -
146 if (!QFile::exists(qtconfig) && QCoreApplication::instance()) {
partially evaluated: !QFile::exists(qtconfig)
TRUEFALSE
yes
Evaluation Count:25
no
Evaluation Count:0
evaluated: QCoreApplication::instance()
TRUEFALSE
yes
Evaluation Count:22
yes
Evaluation Count:3
0-25
147#ifdef Q_OS_MAC -
148 CFBundleRef bundleRef = CFBundleGetMainBundle(); -
149 if (bundleRef) { -
150 QCFType<CFURLRef> urlRef = CFBundleCopyResourceURL(bundleRef, -
151 QCFString(QLatin1String("qt.conf")), -
152 0, -
153 0); -
154 if (urlRef) { -
155 QCFString path = CFURLCopyFileSystemPath(urlRef, kCFURLPOSIXPathStyle); -
156 qtconfig = QDir::cleanPath(path); -
157 } -
158 } -
159 if (qtconfig.isEmpty()) -
160#endif -
161 { -
162 QDir pwd(QCoreApplication::applicationDirPath());
executed (the execution status of this line is deduced): QDir pwd(QCoreApplication::applicationDirPath());
-
163 qtconfig = pwd.filePath(QLatin1String("qt.conf"));
executed (the execution status of this line is deduced): qtconfig = pwd.filePath(QLatin1String("qt.conf"));
-
164 } -
165 }
executed: }
Execution Count:22
22
166#endif -
167 if (QFile::exists(qtconfig))
partially evaluated: QFile::exists(qtconfig)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:25
0-25
168 return new QSettings(qtconfig, QSettings::IniFormat);
never executed: return new QSettings(qtconfig, QSettings::IniFormat);
0
169 return 0; //no luck
executed: return 0;
Execution Count:25
25
170} -
171 -
172#endif // QT_NO_SETTINGS -
173 -
174/*! -
175 \class QLibraryInfo -
176 \inmodule QtCore -
177 \brief The QLibraryInfo class provides information about the Qt library. -
178 -
179 Many pieces of information are established when Qt is configured and built. -
180 This class provides an abstraction for accessing that information. -
181 By using the static functions of this class, an application can obtain -
182 information about the instance of the Qt library which the application -
183 is using at run-time. -
184 -
185 You can also use a \c qt.conf file to override the hard-coded paths -
186 that are compiled into the Qt library. For more information, see -
187 the \l {Using qt.conf} documentation. -
188 -
189 \sa QSysInfo, {Using qt.conf} -
190*/ -
191 -
192#ifndef QT_BOOTSTRAPPED -
193 -
194/*! -
195 \internal -
196 -
197 You cannot create a QLibraryInfo, instead only the static functions are available to query -
198 information. -
199*/ -
200 -
201QLibraryInfo::QLibraryInfo() -
202{ } -
203 -
204/*! -
205 Returns the person to whom this build of Qt is licensed. -
206 -
207 \sa licensedProducts() -
208*/ -
209 -
210QString -
211QLibraryInfo::licensee() -
212{ -
213 const char *str = QT_CONFIGURE_LICENSEE;
never executed (the execution status of this line is deduced): const char *str = qt_configure_licensee_str + 12;;
-
214 return QString::fromLocal8Bit(str);
never executed: return QString::fromLocal8Bit(str);
0
215} -
216 -
217/*! -
218 Returns the products that the license for this build of Qt has access to. -
219 -
220 \sa licensee() -
221*/ -
222 -
223QString -
224QLibraryInfo::licensedProducts() -
225{ -
226 const char *str = QT_CONFIGURE_LICENSED_PRODUCTS;
never executed (the execution status of this line is deduced): const char *str = qt_configure_licensed_products_str + 12;;
-
227 return QString::fromLatin1(str);
never executed: return QString::fromLatin1(str);
0
228} -
229 -
230/*! -
231 \since 4.6 -
232 Returns the installation date for this build of Qt. The install date will -
233 usually be the last time that Qt sources were configured. -
234*/ -
235#ifndef QT_NO_DATESTRING -
236QDate -
237QLibraryInfo::buildDate() -
238{ -
239 return QDate::fromString(QString::fromLatin1(qt_configure_installation + 12), Qt::ISODate);
never executed: return QDate::fromString(QString::fromLatin1(qt_configure_installation + 12), Qt::ISODate);
0
240} -
241#endif //QT_NO_DATESTRING -
242 -
243/*! -
244 \since 5.0 -
245 Returns true if this build of Qt was built with debugging enabled, or -
246 false if it was built in release mode. -
247*/ -
248bool -
249QLibraryInfo::isDebugBuild() -
250{ -
251#ifdef QT_DEBUG -
252 return true; -
253#else -
254 return false;
executed: return false;
Execution Count:1
1
255#endif -
256} -
257 -
258#endif // QT_BOOTSTRAPPED -
259 -
260/* -
261 * To add a new entry in QLibrary::LibraryLocation, add it to the enum above the bootstrapped values and: -
262 * - add its relative path in the qtConfEntries[] array below -
263 * (the key is what appears in a qt.conf file) -
264 * - add a property name in qmake/property.cpp propList[] array -
265 * (it's used with qmake -query) -
266 * - add to qt_config.prf, qt_module.prf, qt_module_fwdpri.prf -
267 */ -
268 -
269static const struct { -
270 char key[19], value[13]; -
271} qtConfEntries[] = { -
272 { "Prefix", "." }, -
273 { "Documentation", "doc" }, // should be ${Data}/doc -
274 { "Headers", "include" }, -
275 { "Libraries", "lib" }, -
276 { "LibraryExecutables", "libexec" }, // should be ${ArchData}/libexec -
277 { "Binaries", "bin" }, -
278 { "Plugins", "plugins" }, // should be ${ArchData}/plugins -
279 { "Imports", "imports" }, // should be ${ArchData}/imports -
280 { "Qml2Imports", "qml" }, // should be ${ArchData}/qml -
281 { "ArchData", "." }, -
282 { "Data", "." }, -
283 { "Translations", "translations" }, // should be ${Data}/translations -
284 { "Examples", "examples" }, -
285 { "Tests", "tests" }, -
286#ifdef QT_BOOTSTRAPPED -
287 { "Sysroot", "" }, -
288 { "HostPrefix", "" }, -
289 { "HostBinaries", "bin" }, -
290 { "HostData", "." }, -
291 { "TargetSpec", "" }, -
292 { "HostSpec", "" }, -
293#endif -
294}; -
295 -
296/*! -
297 Returns the location specified by \a loc. -
298 -
299*/ -
300QString -
301QLibraryInfo::location(LibraryLocation loc) -
302{ -
303#ifdef QT_BOOTSTRAPPED -
304 QString ret = rawLocation(loc, FinalPaths); -
305 -
306 // Automatically prepend the sysroot to target paths -
307 if (loc < SysrootPath || loc > LastHostPath) { -
308 QString sysroot = rawLocation(SysrootPath, FinalPaths); -
309 if (!sysroot.isEmpty() && ret.length() > 2 && ret.at(1) == QLatin1Char(':') -
310 && (ret.at(2) == QLatin1Char('/') || ret.at(2) == QLatin1Char('\\'))) -
311 ret.replace(0, 2, sysroot); // Strip out the drive on Windows targets -
312 else -
313 ret.prepend(sysroot); -
314 } -
315 -
316 return ret; -
317} -
318 -
319QString -
320QLibraryInfo::rawLocation(LibraryLocation loc, PathGroup group) -
321{ -
322#else -
323# define rawLocation(loca, group) location(loca) -
324# define group dummy -
325#endif -
326 QString ret;
executed (the execution status of this line is deduced): QString ret;
-
327#ifdef QT_BOOTSTRAPPED -
328 // Logic for choosing the right data source: if EffectivePaths are requested -
329 // and qt.conf with that section is present, use it, otherwise fall back to -
330 // FinalPaths. For FinalPaths, use qt.conf if present and contains not only -
331 // [EffectivePaths], otherwise fall back to builtins. -
332 if (!QLibraryInfoPrivate::haveGroup(group) -
333 && (group == FinalPaths -
334 || !(group = FinalPaths, QLibraryInfoPrivate::haveGroup(FinalPaths)))) -
335#elif !defined(QT_NO_SETTINGS) -
336 if (!QLibraryInfoPrivate::configuration())
partially evaluated: !QLibraryInfoPrivate::configuration()
TRUEFALSE
yes
Evaluation Count:158
no
Evaluation Count:0
0-158
337#endif -
338 { -
339 const char *path = 0;
executed (the execution status of this line is deduced): const char *path = 0;
-
340 if (unsigned(loc) < sizeof(qt_configure_prefix_path_strs)/sizeof(qt_configure_prefix_path_strs[0]))
evaluated: unsigned(loc) < sizeof(qt_configure_prefix_path_strs)/sizeof(qt_configure_prefix_path_strs[0])
TRUEFALSE
yes
Evaluation Count:153
yes
Evaluation Count:5
5-153
341 path = qt_configure_prefix_path_strs[loc] + 12;
executed: path = qt_configure_prefix_path_strs[loc] + 12;
Execution Count:153
153
342#ifndef Q_OS_WIN // On Windows we use the registry -
343 else if (loc == SettingsPath)
partially evaluated: loc == SettingsPath
TRUEFALSE
yes
Evaluation Count:5
no
Evaluation Count:0
0-5
344 path = QT_CONFIGURE_SETTINGS_PATH;
executed: path = qt_configure_settings_path_str + 12;
Execution Count:5
5
345#endif -
346 -
347 if (path)
partially evaluated: path
TRUEFALSE
yes
Evaluation Count:158
no
Evaluation Count:0
0-158
348 ret = QString::fromLocal8Bit(path);
executed: ret = QString::fromLocal8Bit(path);
Execution Count:158
158
349#ifndef QT_NO_SETTINGS -
350 } else {
executed: }
Execution Count:158
158
351 QString key;
never executed (the execution status of this line is deduced): QString key;
-
352 QString defaultValue;
never executed (the execution status of this line is deduced): QString defaultValue;
-
353 if (unsigned(loc) < sizeof(qtConfEntries)/sizeof(qtConfEntries[0])) {
never evaluated: unsigned(loc) < sizeof(qtConfEntries)/sizeof(qtConfEntries[0])
0
354 key = QLatin1String(qtConfEntries[loc].key);
never executed (the execution status of this line is deduced): key = QLatin1String(qtConfEntries[loc].key);
-
355 defaultValue = QLatin1String(qtConfEntries[loc].value);
never executed (the execution status of this line is deduced): defaultValue = QLatin1String(qtConfEntries[loc].value);
-
356 }
never executed: }
0
357#ifndef Q_OS_WIN // On Windows we use the registry -
358 else if (loc == SettingsPath)
never evaluated: loc == SettingsPath
0
359 key = QLatin1String("Settings");
never executed: key = QLatin1String("Settings");
0
360#endif -
361 -
362 if(!key.isNull()) {
never evaluated: !key.isNull()
0
363 QSettings *config = QLibraryInfoPrivate::configuration();
never executed (the execution status of this line is deduced): QSettings *config = QLibraryInfoPrivate::configuration();
-
364 config->beginGroup(QLatin1String(
never executed (the execution status of this line is deduced): config->beginGroup(QLatin1String(
-
365#ifdef QT_BOOTSTRAPPED
never executed (the execution status of this line is deduced):
-
366 group == EffectivePaths ? "EffectivePaths" :
never executed (the execution status of this line is deduced):
-
367#endif
never executed (the execution status of this line is deduced):
-
368 "Paths"));
never executed (the execution status of this line is deduced): "Paths"));
-
369 -
370 ret = config->value(key, defaultValue).toString();
never executed (the execution status of this line is deduced): ret = config->value(key, defaultValue).toString();
-
371 -
372#ifdef QT_BOOTSTRAPPED -
373 if (ret.isEmpty()) { -
374 if (loc == HostPrefixPath) -
375 ret = config->value(QLatin1String(qtConfEntries[PrefixPath].key), -
376 QLatin1String(qtConfEntries[PrefixPath].value)).toString(); -
377 else if (loc == TargetSpecPath || loc == HostSpecPath) -
378 ret = QString::fromLocal8Bit(qt_configure_prefix_path_strs[loc] + 12); -
379 } -
380#endif -
381 -
382 // expand environment variables in the form $(ENVVAR) -
383 int rep;
never executed (the execution status of this line is deduced): int rep;
-
384 QRegExp reg_var(QLatin1String("\\$\\(.*\\)"));
never executed (the execution status of this line is deduced): QRegExp reg_var(QLatin1String("\\$\\(.*\\)"));
-
385 reg_var.setMinimal(true);
never executed (the execution status of this line is deduced): reg_var.setMinimal(true);
-
386 while((rep = reg_var.indexIn(ret)) != -1) {
never evaluated: (rep = reg_var.indexIn(ret)) != -1
0
387 ret.replace(rep, reg_var.matchedLength(),
never executed (the execution status of this line is deduced): ret.replace(rep, reg_var.matchedLength(),
-
388 QString::fromLocal8Bit(qgetenv(ret.mid(rep + 2,
never executed (the execution status of this line is deduced): QString::fromLocal8Bit(qgetenv(ret.mid(rep + 2,
-
389 reg_var.matchedLength() - 3).toLatin1().constData()).constData()));
never executed (the execution status of this line is deduced): reg_var.matchedLength() - 3).toLatin1().constData()).constData()));
-
390 }
never executed: }
0
391 -
392 config->endGroup();
never executed (the execution status of this line is deduced): config->endGroup();
-
393 -
394 ret = QDir::fromNativeSeparators(ret);
never executed (the execution status of this line is deduced): ret = QDir::fromNativeSeparators(ret);
-
395 }
never executed: }
0
396#endif // QT_NO_SETTINGS -
397 }
never executed: }
0
398 -
399#ifdef QT_BOOTSTRAPPED -
400 // The specs need to be returned verbatim. -
401 if (loc == TargetSpecPath || loc == HostSpecPath) -
402 return ret; -
403#endif -
404 -
405 if (!ret.isEmpty() && QDir::isRelativePath(ret)) {
partially evaluated: !ret.isEmpty()
TRUEFALSE
yes
Evaluation Count:158
no
Evaluation Count:0
partially evaluated: QDir::isRelativePath(ret)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:158
0-158
406 QString baseDir;
never executed (the execution status of this line is deduced): QString baseDir;
-
407#ifdef QT_BOOTSTRAPPED -
408 if (loc == HostPrefixPath || loc == PrefixPath || loc == SysrootPath) { -
409 // We make the prefix/sysroot path absolute to the executable's directory. -
410 // loc == PrefixPath while a sysroot is set would make no sense here. -
411 // loc == SysrootPath only makes sense if qmake lives inside the sysroot itself. -
412 baseDir = QFileInfo(qt_libraryInfoFile()).absolutePath(); -
413 } else if (loc > SysrootPath && loc <= LastHostPath) { -
414 // We make any other host path absolute to the host prefix directory. -
415 baseDir = rawLocation(HostPrefixPath, group); -
416#else -
417 if (loc == PrefixPath) {
never evaluated: loc == PrefixPath
0
418 if (QCoreApplication::instance()) {
never evaluated: QCoreApplication::instance()
0
419#ifdef Q_OS_MAC -
420 CFBundleRef bundleRef = CFBundleGetMainBundle(); -
421 if (bundleRef) { -
422 QCFType<CFURLRef> urlRef = CFBundleCopyBundleURL(bundleRef); -
423 if (urlRef) { -
424 QCFString path = CFURLCopyFileSystemPath(urlRef, kCFURLPOSIXPathStyle); -
425 return QDir::cleanPath(QString(path) + QLatin1String("/Contents/") + ret); -
426 } -
427 } -
428#endif -
429 // We make the prefix path absolute to the executable's directory. -
430 baseDir = QCoreApplication::applicationDirPath();
never executed (the execution status of this line is deduced): baseDir = QCoreApplication::applicationDirPath();
-
431 } else {
never executed: }
0
432 baseDir = QDir::currentPath();
never executed (the execution status of this line is deduced): baseDir = QDir::currentPath();
-
433 }
never executed: }
0
434#endif -
435 } else { -
436 // we make any other path absolute to the prefix directory -
437 baseDir = rawLocation(PrefixPath, group);
never executed (the execution status of this line is deduced): baseDir = location(PrefixPath);
-
438 }
never executed: }
0
439 ret = QDir::cleanPath(baseDir + QLatin1Char('/') + ret);
never executed (the execution status of this line is deduced): ret = QDir::cleanPath(baseDir + QLatin1Char('/') + ret);
-
440 }
never executed: }
0
441 return ret;
executed: return ret;
Execution Count:158
158
442} -
443 -
444/*! -
445 \enum QLibraryInfo::LibraryLocation -
446 -
447 \keyword library location -
448 -
449 This enum type is used to specify a specific location -
450 specifier: -
451 -
452 \value PrefixPath The default prefix for all paths. -
453 \value DocumentationPath The location for documentation upon install. -
454 \value HeadersPath The location for all headers. -
455 \value LibrariesPath The location of installed libraries. -
456 \value LibraryExecutablesPath The location of installed executables required by libraries at runtime. -
457 \value BinariesPath The location of installed Qt binaries (tools and applications). -
458 \value PluginsPath The location of installed Qt plugins. -
459 \value ImportsPath The location of installed QML extensions to import (QML 1.x). -
460 \value Qml2ImportsPath The location of installed QML extensions to import (QML 2.x). -
461 \value ArchDataPath The location of general architecture-dependent Qt data. -
462 \value DataPath The location of general architecture-independent Qt data. -
463 \value TranslationsPath The location of translation information for Qt strings. -
464 \value ExamplesPath The location for examples upon install. -
465 \value TestsPath The location of installed Qt testcases. -
466 \value SettingsPath The location for Qt settings. Not applicable on Windows. -
467 -
468 \sa location() -
469*/ -
470 -
471QT_END_NAMESPACE -
472 -
473#if defined(Q_CC_GNU) && defined(ELF_INTERPRETER) -
474# include <stdio.h> -
475# include <stdlib.h> -
476 -
477extern const char qt_core_interpreter[] __attribute__((section(".interp"))) -
478 = ELF_INTERPRETER; -
479 -
480extern "C" void qt_core_boilerplate(); -
481void qt_core_boilerplate() -
482{ -
483 printf("This is the QtCore library version " QT_VERSION_STR "\n"
never executed (the execution status of this line is deduced): printf("This is the QtCore library version " "5.0.1" "\n"
-
484 "Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).\n"
never executed (the execution status of this line is deduced): "Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).\n"
-
485 "Contact: http://www.qt-project.org/legal\n"
never executed (the execution status of this line is deduced): "Contact: http://www.qt-project.org/legal\n"
-
486 "\n"
never executed (the execution status of this line is deduced): "\n"
-
487 "Build date: %s\n"
never executed (the execution status of this line is deduced): "Build date: %s\n"
-
488 "Installation prefix: %s\n"
never executed (the execution status of this line is deduced): "Installation prefix: %s\n"
-
489 "Library path: %s\n"
never executed (the execution status of this line is deduced): "Library path: %s\n"
-
490 "Include path: %s\n",
never executed (the execution status of this line is deduced): "Include path: %s\n",
-
491 qt_configure_installation + 12,
never executed (the execution status of this line is deduced): qt_configure_installation + 12,
-
492 qt_configure_prefix_path_strs[QT_PREPEND_NAMESPACE(QLibraryInfo)::PrefixPath] + 12,
never executed (the execution status of this line is deduced): qt_configure_prefix_path_strs[::QLibraryInfo::PrefixPath] + 12,
-
493 qt_configure_prefix_path_strs[QT_PREPEND_NAMESPACE(QLibraryInfo)::LibrariesPath] + 12,
never executed (the execution status of this line is deduced): qt_configure_prefix_path_strs[::QLibraryInfo::LibrariesPath] + 12,
-
494 qt_configure_prefix_path_strs[QT_PREPEND_NAMESPACE(QLibraryInfo)::HeadersPath] + 12);
never executed (the execution status of this line is deduced): qt_configure_prefix_path_strs[::QLibraryInfo::HeadersPath] + 12);
-
495 -
496 QT_PREPEND_NAMESPACE(qDumpCPUFeatures)();
never executed (the execution status of this line is deduced): ::qDumpCPUFeatures();
-
497 -
498#ifdef QT_EVAL -
499 extern void qt_core_eval_init(uint); -
500 qt_core_eval_init(1); -
501#endif -
502 -
503 exit(0);
never executed: exit(0);
0
504} -
505 -
506#endif -
507 -
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial