File indexing completed on 2024-05-05 04:40:22
0001 /* 0002 SPDX-FileCopyrightText: 2006 Andreas Pakulat <apaku@gmx.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef QMAKEPROJECTFILE_H 0008 #define QMAKEPROJECTFILE_H 0009 0010 #include "qmakefile.h" 0011 0012 class QMakeMkSpecs; 0013 0014 template <typename T> class QList; 0015 0016 class QMakeMkSpecs; 0017 class QMakeCache; 0018 0019 namespace KDevelop { 0020 class IProject; 0021 } 0022 0023 class QMakeProjectFile : public QMakeFile 0024 { 0025 public: 0026 using DefinePair = QPair<QString, QString>; 0027 static const QStringList FileVariables; 0028 0029 explicit QMakeProjectFile( const QString& projectfile ); 0030 ~QMakeProjectFile() override; 0031 0032 bool read() override; 0033 0034 QStringList subProjects() const; 0035 bool hasSubProject(const QString& file) const; 0036 0037 QStringList files() const; 0038 QStringList filesForTarget( const QString& ) const; 0039 QStringList includeDirectories() const; 0040 QStringList frameworkDirectories() const; 0041 QStringList extraArguments() const; 0042 0043 QStringList targets() const; 0044 0045 QString getTemplate() const; 0046 0047 void setMkSpecs( QMakeMkSpecs* mkspecs ); 0048 void setOwnMkSpecs(bool own); 0049 QMakeMkSpecs* mkSpecs() const; 0050 void setQMakeCache( QMakeCache* cache ); 0051 QMakeCache* qmakeCache() const; 0052 QStringList resolveVariable(const QString& variable, VariableInfo::VariableType type) const override; 0053 QList< DefinePair > defines() const; 0054 0055 /// current pwd, e.g. absoluteDir even for included files 0056 virtual QString pwd() const; 0057 /// path to build dir for the current .pro file 0058 virtual QString outPwd() const; 0059 /// path to dir of current .pro file 0060 virtual QString proFilePwd() const; 0061 /// path to current .pro file 0062 virtual QString proFile() const; 0063 0064 private: 0065 void addPathsForVariable(const QString& variable, QStringList* list, const QString& base = {}) const; 0066 0067 QMakeMkSpecs* m_mkspecs; 0068 QMakeCache* m_cache; 0069 static QHash<QString, QHash<QString, QString> > m_qmakeQueryCache; 0070 QString m_qtIncludeDir; 0071 QString m_qtVersion; 0072 // On OS X, QT_INSTALL_LIBS is typically a framework directory and should thus be added to the framework search path 0073 QString m_qtLibDir; 0074 bool m_ownMkSpecs = false; 0075 }; 0076 0077 #endif 0078