File indexing completed on 2024-05-05 16:46:17

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