| // Copyright (c) 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef TOOLS_GN_QT_CREATOR_WRITER_H_ |
| #define TOOLS_GN_QT_CREATOR_WRITER_H_ |
| |
| #include <set> |
| #include <string> |
| |
| #include "base/files/file_path.h" |
| #include "gn/err.h" |
| #include "gn/target.h" |
| |
| class Builder; |
| class BuildSettings; |
| |
| class QtCreatorWriter { |
| public: |
| static bool RunAndWriteFile(const BuildSettings* build_settings, |
| const Builder& builder, |
| Err* err, |
| const std::string& root_target); |
| |
| private: |
| QtCreatorWriter(const BuildSettings* build_settings, |
| const Builder& builder, |
| const base::FilePath& project_prefix, |
| const std::string& root_target_name); |
| ~QtCreatorWriter(); |
| |
| void Run(); |
| |
| bool DiscoverTargets(); |
| void HandleTarget(const Target* target); |
| |
| void CollectDeps(const Target* target); |
| void AddToSources(const Target::FileList& files); |
| void GenerateFile(const base::FilePath::CharType* suffix, |
| const std::set<std::string>& items); |
| |
| const BuildSettings* build_settings_; |
| const Builder& builder_; |
| base::FilePath project_prefix_; |
| std::string root_target_name_; |
| std::set<const Target*> targets_; |
| std::set<std::string> sources_; |
| std::set<std::string> includes_; |
| std::set<std::string> defines_; |
| Err err_; |
| |
| QtCreatorWriter(const QtCreatorWriter&) = delete; |
| QtCreatorWriter& operator=(const QtCreatorWriter&) = delete; |
| }; |
| |
| #endif // TOOLS_GN_QT_CREATOR_WRITER_H_ |