QtBase  v6.3.1
msvc_vcproj.h
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 #ifndef MSVC_VCPROJ_H
30 #define MSVC_VCPROJ_H
31 
32 #include "winmakefile.h"
33 #include "msvc_objectmodel.h"
34 
36 
37 enum Target {
40  StaticLib
41 };
42 
43 class QUuid;
44 struct VcsolutionDepend;
46 {
47  bool is64Bit;
48  bool writeVcprojParts(QTextStream &);
49 
50  bool writeMakefile(QTextStream &) override;
51  bool writeProjectMakefile() override;
52 
53  void init() override;
54 
55 public:
58 
59  QString defaultMakefile() const;
63  static bool hasBuiltinCompiler(const QString &file);
64 
68  bool usePCH;
69  bool pchIsCFile = false;
71 
73 
74 protected:
76  bool doDepends() const override { return false; } // Never necessary
79  QString extraCompilerName(const ProString &extraCompiler, const QStringList &inputs,
80  const QStringList &outputs);
81  bool supportsMetaBuild() override { return true; }
82  bool supportsMergedBuilds() override { return true; }
84 
85  bool openOutput(QFile &file, const QString &build) const override;
86 
87  virtual void initProject();
88  void initConfiguration();
89  void initCompilerTool();
90  void initLinkerTool();
91  void initLibrarianTool();
92  void initManifestTool();
93  void initResourceTool();
94  void initIDLTool();
95  void initCustomBuildTool();
98  void initDeploymentTool();
99  void initWinDeployQtTool();
100  void initPreLinkEventTools();
101  void initRootFiles();
102  void initSourceFiles();
103  void initHeaderFiles();
104  void initGeneratedFiles();
105  void initTranslationFiles();
106  void initFormFiles();
107  void initResourceFiles();
109  void initDistributionFiles();
110  void initLexYaccFiles();
112 
113  void writeSubDirs(QTextStream &t); // Called from VCXProj backend
114  QUuid getProjectUUID(const QString &filename=QString()); // Called from VCXProj backend
115 
117 
118  // Used for single project
120 
121  // Holds all configurations for glue (merged) project
123 
124 private:
125  ProStringList collectDependencies(QMakeProject *proj, QHash<QString, QString> &projLookup,
126  QHash<QString, QString> &projGuids,
128  QHash<QString, VcsolutionDepend*> &solution_depends,
129  QList<VcsolutionDepend*> &solution_cleanup,
130  QTextStream &t,
131  QHash<QString, ProStringList> &subdirProjectLookup,
132  const ProStringList &allDependencies = ProStringList());
133  QUuid increaseUUID(const QUuid &id);
134  QString retrievePlatformToolSet() const;
135  bool isStandardSuffix(const QString &suffix) const;
136  ProString firstInputFileName(const ProString &extraCompilerName) const;
137  QString firstExpandedOutputFileName(const ProString &extraCompilerName);
138  void createCustomBuildToolFakeFile(const QString &cbtFilePath, const QString &realOutFilePath);
139  bool otherFiltersContain(const QString &fileName) const;
140  friend class VCFilter;
141 };
142 
144 {
145  return project->first("TARGET") + project->first("VCPROJ_EXTENSION");
146 }
147 
149 
150 #endif // MSVC_VCPROJ_H
void callExtraCompilerDependCommand(const ProString &extraCompiler, const QString &tmp_dep_cmd, const QString &inpf, const QString &tmp_out, bool dep_lines, QStringList *deps, bool existingDepsOnly, bool checkCommandAvailability=false)
Definition: makefile.cpp:1883
virtual QString replaceExtraCompilerVariables(const QString &, const QStringList &, const QStringList &, ReplaceFor forShell)
Definition: makefile.cpp:1596
QMakeProject * project
Definition: makefile.h:139
The QFile class provides an interface for reading from and writing to files.
Definition: qfile.h:94
ProString first(const ProKey &variableName) const
The QString class provides a Unicode character string.
Definition: qstring.h:388
The QStringList class provides a list of strings.
The QTextStream class provides a convenient interface for reading and writing text.
Definition: qtextstream.h:62
The QUuid class stores a Universally Unique Identifier (UUID).
Definition: quuid.h:67
QString extraCompilerName(const ProString &extraCompiler, const QStringList &inputs, const QStringList &outputs)
bool autogenPrecompSource
Definition: msvc_vcproj.h:62
void initPreLinkEventTools()
QHash< QString, QStringList > extraCompilerSources
Definition: msvc_vcproj.h:65
void initCustomBuildTool()
void initConfiguration()
VCProjectSingleConfig vcProject
Definition: msvc_vcproj.h:119
bool supportsMergedBuilds() override
Definition: msvc_vcproj.h:82
void initDistributionFiles()
bool openOutput(QFile &file, const QString &build) const override
QUuid getProjectUUID(const QString &filename=QString())
QString defaultMakefile() const
Definition: msvc_vcproj.h:143
void initDeploymentFiles()
QString precompPch
Definition: msvc_vcproj.h:61
bool supportsMetaBuild() override
Definition: msvc_vcproj.h:81
QString precompHFilename
Definition: msvc_vcproj.h:60
bool doDepends() const override
Definition: msvc_vcproj.h:76
void initExtraCompilerOutputs()
void initPreBuildEventTools()
bool mergeBuildProject(MakefileGenerator *other) override
virtual VCProjectWriter * createProjectWriter()
void initWinDeployQtTool()
QString replaceExtraCompilerVariables(const QString &, const QStringList &, const QStringList &, ReplaceFor) override
virtual void initProject()
Target projectTarget
Definition: msvc_vcproj.h:116
void initGeneratedFiles()
QString precompObj
Definition: msvc_vcproj.h:61
void initDeploymentTool()
void initResourceFiles()
void initLibrarianTool()
void writeSubDirs(QTextStream &t)
QList< VcprojGenerator * > mergedProjects
Definition: msvc_vcproj.h:122
QString precompSource
Definition: msvc_vcproj.h:60
void initTranslationFiles()
QHash< QString, QString > extraCompilerOutputs
Definition: msvc_vcproj.h:66
static bool hasBuiltinCompiler(const QString &file)
const QString customBuildToolFilterFileSuffix
Definition: msvc_vcproj.h:67
void initPostBuildEventTools()
VCProjectWriter * projectWriter
Definition: msvc_vcproj.h:70
QString precompH
Definition: msvc_vcproj.h:60
Target
Definition: msvc_vcproj.h:37
@ SharedLib
Definition: msvc_vcproj.h:39
@ StaticLib
Definition: msvc_vcproj.h:40
@ Application
Definition: msvc_vcproj.h:38
#define QString()
Definition: parse-defines.h:51
GLdouble GLdouble t
[9]
Definition: qopenglext.h:243
QFile file
[0]
QSharedPointer< T > other(t)
[5]
void build(const QString &name)