File indexing completed on 2024-05-05 04:40:21
0001 /* 0002 SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef QMAKEFILE_H 0008 #define QMAKEFILE_H 0009 0010 0011 #include <util/stack.h> 0012 0013 #include "qmakefilevisitor.h" 0014 0015 class QStringList; 0016 0017 namespace KDevelop 0018 { 0019 class IProject; 0020 } 0021 0022 namespace QMake 0023 { 0024 class ProjectAST; 0025 } 0026 0027 class Scope; 0028 class QMakeMkSpecs; 0029 0030 class QMakeFile : public QMakeVariableResolver 0031 { 0032 public: 0033 explicit QMakeFile( QString file ); 0034 ~QMakeFile() override; 0035 virtual bool read(); 0036 QString absoluteDir() const; 0037 QString absoluteFile() const; 0038 QMake::ProjectAST* ast() const; 0039 0040 QStringList variableValues(const QString&) const; 0041 QStringList variables() const; 0042 VariableMap variableMap() const; 0043 0044 bool containsVariable( const QString& ) const; 0045 0046 QStringList resolveVariable( const QString& variable, VariableInfo::VariableType type) const override; 0047 0048 /// required for proper build-dir resolution 0049 void setProject(KDevelop::IProject* project); 0050 KDevelop::IProject* project() const; 0051 protected: 0052 VariableMap m_variableValues; 0053 0054 QStringList resolveShellGlobbing( const QString& pattern, const QString& base = {} ) const; 0055 QStringList resolveFileName( const QString& file, const QString& base = {} ) const; 0056 QString resolveToSingleFileName( const QString& file, const QString& base = {} ) const; 0057 private: 0058 QMake::ProjectAST* m_ast; 0059 QString m_projectFile; 0060 KDevelop::IProject* m_project; 0061 }; 0062 0063 #endif