QtBase  v6.3.1
option.cpp
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the qmake application of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:GPL-EXCEPT$
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 The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21 ** included in the packaging of this file. Please review the following
22 ** information to ensure the GNU General Public License requirements will
23 ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24 **
25 ** $QT_END_LICENSE$
26 **
27 ****************************************************************************/
28 
29 #include "option.h"
30 #include "cachekeys.h"
31 #include <ioutils.h>
32 #include <qdir.h>
33 #include <qregularexpression.h>
34 #include <qhash.h>
35 #include <qdebug.h>
36 #include <stdlib.h>
37 #include <stdarg.h>
38 
39 #include <qmakelibraryinfo.h>
40 #include <private/qlibraryinfo_p.h>
41 
43 
44 using namespace QMakeInternal;
45 
51 
52 //convenience
74 
75 //mode
77 
78 //all modes
80 int Option::debug_level = 0;
83 bool Option::recursive = false;
84 
85 //QMAKE_*_PROPERTY stuff
87 
88 //QMAKE_GENERATE_PROJECT stuff
89 bool Option::projfile::do_pwd = true;
91 
92 //QMAKE_GENERATE_MAKEFILE stuff
94 bool Option::mkfile::do_deps = true;
95 bool Option::mkfile::do_mocs = true;
99 
100 static Option::QMAKE_MODE default_mode(QString progname)
101 {
102  int s = progname.lastIndexOf(QDir::separator());
103  if(s != -1)
104  progname = progname.right(progname.length() - (s + 1));
105  if(progname == "qmakegen")
107  else if(progname == "qt-config")
110 }
111 
112 static QString detectProjectFile(const QString &path)
113 {
114  QString ret;
115  QDir dir(path);
116  if(dir.exists(dir.dirName() + Option::pro_ext)) {
117  ret = dir.filePath(dir.dirName()) + Option::pro_ext;
118  } else { //last try..
119  QStringList profiles = dir.entryList(QStringList("*" + Option::pro_ext));
120  if(profiles.count() == 1)
121  ret = dir.filePath(profiles.at(0));
122  }
123  return ret;
124 }
125 
126 bool usage(const char *a0)
127 {
128  fprintf(stdout, "Usage: %s [mode] [options] [files]\n"
129  "\n"
130  "QMake has two modes, one mode for generating project files based on\n"
131  "some heuristics, and the other for generating makefiles. Normally you\n"
132  "shouldn't need to specify a mode, as makefile generation is the default\n"
133  "mode for qmake, but you may use this to test qmake on an existing project\n"
134  "\n"
135  "Mode:\n"
136  " -project Put qmake into project file generation mode%s\n"
137  " In this mode qmake interprets [files] as files to\n"
138  " be added to the .pro file. By default, all files with\n"
139  " known source extensions are added.\n"
140  " Note: The created .pro file probably will \n"
141  " need to be edited. For example add the QT variable to \n"
142  " specify what modules are required.\n"
143  " -makefile Put qmake into makefile generation mode%s\n"
144  " In this mode qmake interprets files as project files to\n"
145  " be processed, if skipped qmake will try to find a project\n"
146  " file in your current working directory\n"
147  "\n"
148  "Warnings Options:\n"
149  " -Wnone Turn off all warnings; specific ones may be re-enabled by\n"
150  " later -W options\n"
151  " -Wall Turn on all warnings\n"
152  " -Wparser Turn on parser warnings\n"
153  " -Wlogic Turn on logic warnings (on by default)\n"
154  " -Wdeprecated Turn on deprecation warnings (on by default)\n"
155  "\n"
156  "Options:\n"
157  " * You can place any variable assignment in options and it will be *\n"
158  " * processed as if it was in [files]. These assignments will be *\n"
159  " * processed before [files] by default. *\n"
160  " -o file Write output to file\n"
161  " -d Increase debug level\n"
162  " -t templ Overrides TEMPLATE as templ\n"
163  " -tp prefix Overrides TEMPLATE so that prefix is prefixed into the value\n"
164  " -help This help\n"
165  " -v Version information\n"
166  " -early All subsequent variable assignments will be\n"
167  " parsed right before default_pre.prf\n"
168  " -before All subsequent variable assignments will be\n"
169  " parsed right before [files] (the default)\n"
170  " -after All subsequent variable assignments will be\n"
171  " parsed after [files]\n"
172  " -late All subsequent variable assignments will be\n"
173  " parsed right after default_post.prf\n"
174  " -norecursive Don't do a recursive search\n"
175  " -recursive Do a recursive search\n"
176  " -set <prop> <value> Set persistent property\n"
177  " -unset <prop> Unset persistent property\n"
178  " -query <prop> Query persistent property. Show all if <prop> is empty.\n"
179  " -qtconf file Use file instead of looking for qt" QT_STRINGIFY(QT_VERSION_MAJOR) ".conf, then qt.conf\n"
180  " -cache file Use file as cache [makefile mode only]\n"
181  " -spec spec Use spec as QMAKESPEC [makefile mode only]\n"
182  " -nocache Don't use a cache file [makefile mode only]\n"
183  " -nodepend Don't generate dependencies [makefile mode only]\n"
184  " -nomoc Don't generate moc targets [makefile mode only]\n"
185  " -nopwd Don't look for files in pwd [project mode only]\n"
186  ,a0,
187  default_mode(a0) == Option::QMAKE_GENERATE_PROJECT ? " (default)" : "",
188  default_mode(a0) == Option::QMAKE_GENERATE_MAKEFILE ? " (default)" : ""
189  );
190  return false;
191 }
192 
193 int
194 Option::parseCommandLine(QStringList &args, QMakeCmdLineParserState &state)
195 {
196  enum { ArgNone, ArgOutput } argState = ArgNone;
197  int x = 0;
198  while (x < args.count()) {
199  switch (argState) {
200  case ArgOutput:
202  args.erase(args.begin() + x, args.begin() + x + 2);
203  argState = ArgNone;
204  continue;
205  default:
206  QMakeGlobals::ArgumentReturn cmdRet = globals->addCommandLineArguments(state, args, &x);
207  if (cmdRet == QMakeGlobals::ArgumentMalformed) {
208  fprintf(stderr, "***Option %s requires a parameter\n", qPrintable(args.at(x - 1)));
210  }
211  if (!globals->qtconf.isEmpty())
212  QLibraryInfoPrivate::qtconfManualPath = &globals->qtconf;
213  if (cmdRet == QMakeGlobals::ArgumentsOk)
214  break;
216  QString arg = args.at(x);
217  if (arg.startsWith(QLatin1Char('-'))) {
218  if (arg == "-d") {
220  } else if (arg == "-v" || arg == "-version" || arg == "--version") {
221  fprintf(stdout,
222  "QMake version %s\n"
223  "Using Qt version %s in %s\n",
224  QMAKE_VERSION_STR, QT_VERSION_STR,
226  .toLatin1()
227  .constData());
228 #ifdef QMAKE_OPENSOURCE_VERSION
229  fprintf(stdout, "QMake is Open Source software from The Qt Company Ltd and/or its subsidiary(-ies).\n");
230 #endif
232  } else if (arg == "-h" || arg == "-help" || arg == "--help") {
234  } else if (arg == "-Wall") {
236  } else if (arg == "-Wparser") {
238  } else if (arg == "-Wlogic") {
240  } else if (arg == "-Wdeprecated") {
242  } else if (arg == "-Wnone") {
244  } else if (arg == "-r" || arg == "-recursive") {
245  Option::recursive = true;
246  args.removeAt(x);
247  continue;
248  } else if (arg == "-nr" || arg == "-norecursive") {
249  Option::recursive = false;
250  args.removeAt(x);
251  continue;
252  } else if (arg == "-o" || arg == "-output") {
253  argState = ArgOutput;
254  } else {
257  if (arg == "-nodepend" || arg == "-nodepends") {
258  Option::mkfile::do_deps = false;
259  } else if (arg == "-nomoc") {
260  Option::mkfile::do_mocs = false;
261  } else if (arg == "-nodependheuristics") {
263  } else if (arg == "-E") {
265  } else {
266  fprintf(stderr, "***Unknown option %s\n", arg.toLatin1().constData());
268  }
270  if (arg == "-nopwd") {
271  Option::projfile::do_pwd = false;
272  } else {
273  fprintf(stderr, "***Unknown option %s\n", arg.toLatin1().constData());
275  }
276  }
277  }
278  } else {
279  bool handled = true;
284  } else {
285  QFileInfo fi(arg);
286  if(!fi.makeAbsolute()) //strange
287  arg = fi.filePath();
290  if(fi.isDir()) {
291  QString proj = detectProjectFile(arg);
292  if (!proj.isNull())
293  arg = proj;
294  }
298  } else {
299  handled = false;
300  }
301  }
302  if(!handled) {
304  }
305  args.removeAt(x);
306  continue;
307  }
308  }
309  x++;
310  }
311  if (argState != ArgNone) {
312  fprintf(stderr, "***Option %s requires a parameter\n", qPrintable(args.at(x - 1)));
314  }
316 }
317 
318 int
319 Option::init(int argc, char **argv)
320 {
321  Option::prf_ext = ".prf";
322  Option::pro_ext = ".pro";
323  Option::field_sep = ' ';
324 
325  if(argc && argv) {
326  QString argv0 = argv[0];
327 #ifdef Q_OS_WIN
328  if (!argv0.endsWith(QLatin1String(".exe"), Qt::CaseInsensitive))
329  argv0 += QLatin1String(".exe");
330 #endif
332  Option::qmake_mode = default_mode(argv0);
333  globals->qmake_abslocation = IoUtils::binaryAbsLocation(argv0);
334  if (Q_UNLIKELY(globals->qmake_abslocation.isNull())) {
335  // This is rather unlikely to ever happen on a modern system ...
336  globals->qmake_abslocation =
339  + "/qmake"
340 #ifdef Q_OS_WIN
341  ".exe"
342 #endif
343  ;
344  }
345  } else {
347  }
348 
350  const QByteArray envflags = qgetenv("QMAKEFLAGS");
351  if (!envflags.isNull()) {
353  QByteArray buf = "";
354  char quote = 0;
355  bool hasWord = false;
356  for (int i = 0; i < envflags.size(); ++i) {
357  char c = envflags.at(i);
358  if (!quote && (c == '\'' || c == '"')) {
359  quote = c;
360  } else if (c == quote) {
361  quote = 0;
362  } else if (!quote && c == ' ') {
363  if (hasWord) {
365  hasWord = false;
366  buf = "";
367  }
368  } else {
369  buf += c;
370  hasWord = true;
371  }
372  }
373  if (hasWord)
375  parseCommandLine(args, cmdstate);
376  cmdstate.flush();
377  }
378  if(argc && argv) {
380  args.reserve(argc - 1);
381  for (int i = 1; i < argc; i++)
382  args << QString::fromLocal8Bit(argv[i]);
383 
384  qsizetype idx = 0;
385  while (idx < args.size()) {
386  QString opt = args.at(idx);
387  if (opt == "-project") {
388  Option::recursive = true;
390  } else if (opt == "-prl") {
391  Option::mkfile::do_deps = false;
392  Option::mkfile::do_mocs = false;
394  } else if (opt == "-set") {
396  } else if (opt == "-unset") {
398  } else if (opt == "-query") {
400  } else if (opt == "-makefile") {
402  } else if (opt == "-qtconf") {
403  // Skip "-qtconf <file>" and proceed.
404  ++idx;
405  if (idx + 1 < args.length())
406  ++idx;
407  continue;
408  } else {
409  break;
410  }
411  args.takeAt(idx);
412  break;
413  }
414 
415  int ret = parseCommandLine(args, cmdstate);
418  usage(argv[0]);
419  return ret;
420  //return ret == QMAKE_CMDLINE_SHOW_USAGE ? usage(argv[0]) : false;
421  }
422  globals->qmake_args = args;
423  globals->qmake_extra_args = cmdstate.extraargs;
424  }
425  globals->commitCommandLineArguments(cmdstate);
426  globals->debugLevel = Option::debug_level;
427 
428  //last chance for defaults
431  globals->useEnvironment();
432 
433  //try REALLY hard to do it for them, lazy..
434  if(Option::mkfile::project_files.isEmpty()) {
435  QString proj = detectProjectFile(qmake_getpwd());
436  if(!proj.isNull())
437  Option::mkfile::project_files.append(proj);
438  if(Option::mkfile::project_files.isEmpty()) {
439  usage(argv[0]);
441  }
442  }
443  }
444 
445  return QMAKE_CMDLINE_SUCCESS;
446 }
447 
448 void Option::prepareProject(const QString &pfile)
449 {
450  // Canonicalize only the directory, otherwise things will go haywire
451  // if the file itself is a symbolic link.
452  const QString srcpath = QFileInfo(QFileInfo(pfile).absolutePath()).canonicalFilePath();
453  globals->setDirectories(srcpath, output_dir);
454 }
455 
457 {
458  Option::cpp_ext = project->values("QMAKE_EXT_CPP").toQStringList();
459  Option::h_ext = project->values("QMAKE_EXT_H").toQStringList();
460  Option::c_ext = project->values("QMAKE_EXT_C").toQStringList();
461  Option::objc_ext = project->first("QMAKE_EXT_OBJC").toQString();
462  Option::objcpp_ext = project->first("QMAKE_EXT_OBJCXX").toQString();
463  Option::res_ext = project->first("QMAKE_EXT_RES").toQString();
464  Option::pkgcfg_ext = project->first("QMAKE_EXT_PKGCONFIG").toQString();
465  Option::libtool_ext = project->first("QMAKE_EXT_LIBTOOL").toQString();
466  Option::prl_ext = project->first("QMAKE_EXT_PRL").toQString();
467  Option::ui_ext = project->first("QMAKE_EXT_UI").toQString();
468  Option::cpp_moc_ext = project->first("QMAKE_EXT_CPP_MOC").toQString();
469  Option::lex_ext = project->first("QMAKE_EXT_LEX").toQString();
470  Option::yacc_ext = project->first("QMAKE_EXT_YACC").toQString();
471  Option::obj_ext = project->first("QMAKE_EXT_OBJ").toQString();
472  Option::h_moc_mod = project->first("QMAKE_H_MOD_MOC").toQString();
473  Option::lex_mod = project->first("QMAKE_MOD_LEX").toQString();
474  Option::yacc_mod = project->first("QMAKE_MOD_YACC").toQString();
475 
476  Option::dir_sep = project->dirSep().toQString();
477 
478  if (!project->buildRoot().isEmpty() && Option::output_dir.startsWith(project->buildRoot()))
480  Option::output_dir.mid(project->buildRoot().length()).count('/');
481 
482  return true;
483 }
484 
485 QString
487 {
488  //const QString orig_string = string;
489  static QHash<FixStringCacheKey, QString> *cache = nullptr;
490  if(!cache) {
493  }
494  FixStringCacheKey cacheKey(string, flags);
495 
497 
498  if (it != cache->constEnd()) {
499  //qDebug() << "Fix (cached) " << orig_string << "->" << it.value();
500  return it.value();
501  }
502 
503  //fix the environment variables
504  if(flags & Option::FixEnvVars) {
507  while ((match = reg_var.match(string)).hasMatch()) {
508  int start = match.capturedStart();
509  int len = match.capturedLength();
510  string.replace(start, len,
511  QString::fromLocal8Bit(qgetenv(string.mid(start + 2, len - 3).toLatin1().constData()).constData()));
512  }
513  }
514 
515  //canonicalize it (and treat as a path)
517 #if 0
518  string = QFileInfo(string).canonicalFilePath();
519 #endif
520  string = QDir::cleanPath(string);
521  }
522 
523  // either none or only one active flag
526  ((flags & Option::FixPathToNormalSeparators) != 0) <= 1);
527 
528  //fix separators
530  string.replace('\\', '/');
532 #if defined(Q_OS_WIN32)
533  string.replace('/', '\\');
534 #else
535  string.replace('\\', '/');
536 #endif
538  string.replace('/', Option::dir_sep).replace('\\', Option::dir_sep);
539  }
540 
541  if ((string.startsWith("\"") && string.endsWith("\"")) ||
542  (string.startsWith("\'") && string.endsWith("\'")))
543  string = string.mid(1, string.length()-2);
544 
545  //cache
546  //qDebug() << "Fix" << orig_string << "->" << string;
547  cache->insert(cacheKey, string);
548  return string;
549 }
550 
551 void debug_msg_internal(int level, const char *fmt, ...)
552 {
554  return;
555  fprintf(stderr, "DEBUG %d: ", level);
556  {
557  va_list ap;
558  va_start(ap, fmt);
559  vfprintf(stderr, fmt, ap);
560  va_end(ap);
561  }
562  fprintf(stderr, "\n");
563 }
564 
565 void warn_msg(QMakeWarn type, const char *fmt, ...)
566 {
567  if(!(Option::warn_level & type))
568  return;
569  fprintf(stderr, "WARNING: ");
570  {
571  va_list ap;
572  va_start(ap, fmt);
573  vfprintf(stderr, fmt, ap);
574  va_end(ap);
575  }
576  fprintf(stderr, "\n");
577 }
578 
579 void EvalHandler::message(int type, const QString &msg, const QString &fileName, int lineNo)
580 {
581  QString pfx;
583  int code = (type & QMakeHandler::CodeMask);
586  return;
587  pfx = QString::fromLatin1("WARNING: ");
588  }
589  if (lineNo > 0)
590  fprintf(stderr, "%s%s:%d: %s\n", qPrintable(pfx), qPrintable(fileName), lineNo, qPrintable(msg));
591  else if (lineNo)
592  fprintf(stderr, "%s%s: %s\n", qPrintable(pfx), qPrintable(fileName), qPrintable(msg));
593  else
594  fprintf(stderr, "%s%s\n", qPrintable(pfx), qPrintable(msg));
595 }
596 
598 {
599  Q_UNUSED(type);
600  fprintf(stderr, "%s\n", qPrintable(msg));
601 }
602 
604 {
605 }
606 
608 {
609 }
610 
612 private:
614  void **data;
615 public:
618  (*func)(*data);
619  *data = nullptr;
620  }
621 };
622 static QList<QMakeCacheClearItem*> cache_items;
623 
624 void
626 {
627  qDeleteAll(cache_items);
628  cache_items.clear();
629 }
630 
631 void
633 {
634  cache_items.append(new QMakeCacheClearItem(func, data));
635 }
636 
small capitals from c petite p scientific i
[1]
Definition: afcover.h:80
const char msg[]
Definition: arch.cpp:46
void qmakeDeleteCacheClear(void *i)
Definition: cachekeys.h:110
void(* qmakeCacheClearFunc)(void *)
Definition: cachekeys.h:114
FT_UInt idx
Definition: cffcmap.c:135
void message(int type, const QString &msg, const QString &fileName, int lineNo) override
Definition: option.cpp:579
void fileMessage(int type, const QString &msg) override
Definition: option.cpp:597
void doneWithEval(ProFile *) override
Definition: option.cpp:607
void aboutToEval(ProFile *, ProFile *, EvalFileType) override
Definition: option.cpp:603
QString toQString() const
Definition: proitems.cpp:153
QStringList toQStringList() const
Definition: proitems.cpp:425
The QByteArray class provides an array of bytes.
Definition: qbytearray.h:85
qsizetype size() const noexcept
Definition: qbytearray.h:470
char at(qsizetype i) const
Definition: qbytearray.h:505
bool isNull() const noexcept
The QDir class provides access to directory structures and their contents.
Definition: qdir.h:55
static QChar separator()
Definition: qdir.h:234
static QString cleanPath(const QString &path)
Definition: qdir.cpp:2350
static QString currentPath()
Definition: qdir.cpp:2006
The QFile class provides an interface for reading from and writing to files.
Definition: qfile.h:94
void setFileName(const QString &name)
Definition: qfile.cpp:327
The QFileInfo class provides system-independent file information.
Definition: qfileinfo.h:57
bool makeAbsolute()
Definition: qfileinfo.cpp:681
bool isDir() const
Definition: qfileinfo.cpp:1048
QString canonicalFilePath() const
Definition: qfileinfo.cpp:573
QString filePath() const
Definition: qfileinfo.cpp:753
The QHash::const_iterator class provides an STL-style const iterator for QHash.
Definition: qhash.h:1088
The QHash class is a template class that provides a hash-table-based dictionary.
Definition: qhash.h:773
The QLatin1String class provides a thin wrapper around an US-ASCII/Latin-1 encoded string literal.
Definition: qstring.h:84
Definition: qlist.h:108
QMakeCacheClearItem(qmakeCacheClearFunc f, void **d)
Definition: option.cpp:616
static QString binaryAbsLocation(const QString &argv0)
Definition: ioutils.cpp:52
QString buildRoot() const
Definition: project.h:50
ProString first(const ProKey &variableName) const
ProStringList & values(const ProKey &v)
Definition: project.h:63
ProString dirSep() const
The QRegularExpression class provides pattern matching using regular expressions.
QRegularExpressionMatch match(const QString &subject, qsizetype offset=0, MatchType matchType=NormalMatch, MatchOptions matchOptions=NoMatchOption) const
The QRegularExpressionMatch class provides the results of a matching a QRegularExpression against a s...
qsizetype capturedStart(int nth=0) const
qsizetype capturedLength(int nth=0) const
The QString class provides a Unicode character string.
Definition: qstring.h:388
QString right(qsizetype n) const
Definition: qstring.cpp:4970
qsizetype count() const
Definition: qstring.h:414
qsizetype lastIndexOf(QChar c, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
Definition: qstring.h:514
bool startsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Definition: qstring.cpp:5092
static QString fromLatin1(QByteArrayView ba)
Definition: qstring.cpp:5488
static QString fromLocal8Bit(QByteArrayView ba)
Definition: qstring.cpp:5563
bool isNull() const
Definition: qstring.h:1078
QString mid(qsizetype position, qsizetype n=-1) const
Definition: qstring.cpp:4994
bool endsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Definition: qstring.cpp:5143
bool isEmpty() const
Definition: qstring.h:1216
qsizetype length() const
Definition: qstring.h:415
The QStringList class provides a list of strings.
CommandLineParseResult parseCommandLine(QCommandLineParser &parser, DnsQuery *query, QString *errorMessage)
Definition: dnslookup.cpp:96
qDeleteAll(list.begin(), list.end())
QCache< int, Employee > cache
[0]
QStyleOptionButton opt
else opt state
[0]
va_end(ap)
static void const void const char bool unsigned int int const char va_start(ap, message)
@ CaseInsensitive
Definition: qnamespace.h:1283
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool endsWith(QByteArrayView haystack, QByteArrayView needle) noexcept
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool startsWith(QByteArrayView haystack, QByteArrayView needle) noexcept
void warn_msg(QMakeWarn type, const char *fmt,...)
Definition: option.cpp:565
void qmakeAddCacheClear(qmakeCacheClearFunc func, void **data)
Definition: option.cpp:632
void qmakeClearCaches()
Definition: option.cpp:625
bool usage(const char *a0)
Definition: option.cpp:126
void debug_msg_internal(int level, const char *fmt,...)
Definition: option.cpp:551
#define Q_UNLIKELY(x)
QList< QString > QStringList
Definition: qcontainerfwd.h:64
#define QT_STRINGIFY(x)
Definition: qglobal.h:131
QT_BEGIN_INCLUDE_NAMESPACE typedef unsigned char uchar
Definition: qglobal.h:332
ptrdiff_t qsizetype
Definition: qglobal.h:308
QString qmake_getpwd()
Definition: main.cpp:434
QMakeWarn
Definition: option.h:48
@ WarnNone
Definition: option.h:49
@ WarnDeprecated
Definition: option.h:52
@ WarnLogic
Definition: option.h:51
@ WarnAll
Definition: option.h:53
@ WarnParser
Definition: option.h:50
GLenum GLuint GLenum GLsizei length
Definition: qopengl.h:270
GLenum type
Definition: qopengl.h:270
GLint GLint GLint GLint GLint x
[0]
GLenum GLuint GLint level
GLfloat GLfloat f
GLenum GLuint GLenum GLsizei const GLchar * buf
GLbitfield flags
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint start
GLenum func
Definition: qopenglext.h:663
const GLubyte * c
Definition: qopenglext.h:12701
GLenum GLsizei len
Definition: qopenglext.h:3292
GLsizei const GLchar *const * path
Definition: qopenglext.h:4283
GLdouble s
[6]
Definition: qopenglext.h:235
GLsizei const GLchar *const * string
[0]
Definition: qopenglext.h:694
#define Q_ASSERT(cond)
Definition: qrandom.cpp:84
SSL_CTX int(*) void arg)
#define a0
Q_UNUSED(salary)
[21]
QFileInfo fi("c:/temp/foo")
[newstuff]
QString dir
[11]
QStringList::Iterator it
static bool do_deps
Definition: option.h:186
static int cachefile_depth
Definition: option.h:190
static QStringList project_files
Definition: option.h:191
static bool do_dep_heuristics
Definition: option.h:188
static bool do_preprocess
Definition: option.h:189
static bool do_mocs
Definition: option.h:187
static bool do_pwd
Definition: option.h:180
static QStringList project_dirs
Definition: option.h:181
static QStringList properties
Definition: option.h:175
static EvalHandler evalHandler
Definition: option.h:71
static QMakeGlobals * globals
Definition: option.h:73
static QStringList cpp_ext
Definition: option.h:85
static QString yacc_mod
Definition: option.h:95
static QString prf_ext
Definition: option.h:81
static void prepareProject(const QString &pfile)
Definition: option.cpp:448
static char field_sep
Definition: option.h:99
static QString objc_ext
Definition: option.h:87
static QString pkgcfg_ext
Definition: option.h:80
static QStringList h_ext
Definition: option.h:84
static QString lex_mod
Definition: option.h:94
static ProFileCache * proFileCache
Definition: option.h:74
static QString fixString(QString string, uchar flags)
Definition: option.cpp:486
static QMakeVfs * vfs
Definition: option.h:75
static QString cpp_moc_ext
Definition: option.h:89
static QString obj_ext
Definition: option.h:90
static QStringList c_ext
Definition: option.h:86
static QMAKE_MODE qmake_mode
Definition: option.h:164
static QString pro_ext
Definition: option.h:97
@ QMAKE_CMDLINE_BAIL
Definition: option.h:104
@ QMAKE_CMDLINE_SUCCESS
Definition: option.h:102
@ QMAKE_CMDLINE_SHOW_USAGE
Definition: option.h:103
@ QMAKE_CMDLINE_ERROR
Definition: option.h:105
static QString lex_ext
Definition: option.h:91
static QString dir_sep
Definition: option.h:96
static int init(int argc=0, char **argv=nullptr)
Definition: option.cpp:319
static QMakeParser * parser
Definition: option.h:76
QMAKE_MODE
Definition: option.h:161
@ QMAKE_GENERATE_NOTHING
Definition: option.h:161
@ QMAKE_GENERATE_MAKEFILE
Definition: option.h:162
@ QMAKE_SET_PROPERTY
Definition: option.h:163
@ QMAKE_QUERY_PROPERTY
Definition: option.h:163
@ QMAKE_UNSET_PROPERTY
Definition: option.h:163
@ QMAKE_GENERATE_PROJECT
Definition: option.h:162
@ QMAKE_GENERATE_PRL
Definition: option.h:162
static QString prl_ext
Definition: option.h:82
static QString yacc_ext
Definition: option.h:92
static QString objcpp_ext
Definition: option.h:88
static bool recursive
Definition: option.h:171
static int debug_level
Definition: option.h:169
static QString output_dir
Definition: option.h:168
static QString res_ext
Definition: option.h:98
static QString h_moc_mod
Definition: option.h:93
static QString ui_ext
Definition: option.h:83
static QFile output
Definition: option.h:167
@ FixPathToLocalSeparators
Definition: option.h:117
@ FixEnvVars
Definition: option.h:115
@ FixPathCanonicalize
Definition: option.h:116
@ FixPathToTargetSeparators
Definition: option.h:118
@ FixPathToNormalSeparators
Definition: option.h:119
static int warn_level
Definition: option.h:170
static bool postProcessProject(QMakeProject *)
Definition: option.cpp:456
static QString libtool_ext
Definition: option.h:79
The QLatin1Char class provides an 8-bit ASCII/Latin-1 character.
Definition: qchar.h:53
static QString path(int loc)
static QString rawLocation(int loc, PathGroup group)
Definition: inftrees.h:24