From d0f3d7cb89a234f88b06bc19a41e50c41b1eab0a Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 29 Oct 2012 13:54:33 +0100 Subject: C++: Clean up dev tools. * Add -h and -help options describing the tools and their usage. * Make the tools compile and run on Windows (MinGW, MSVC). * Rename project dirs, executables and main source files to more meaningful names: - Use same base name for project dir, *.pro file, main source file and (if applicable) script file. - Use the prefix "cplusplus-". - The names are now: - gen-cpp-ast/generate-ast --> cplusplus-update-frontend - mkvisitor --> cplusplus-mkvisitor - cplusplus-dump/cplusplus0 --> cplusplus-ast2png * Get rid of 'c++' shell scripts. * Get rid of duplicates of 'conf.c++'. Rename to 'pp-configuration.inc'. * Introduce src/tools/cplusplus-tools-utils containing common stuff that is used at least in two tools. 'pp-configuration.inc' can also be found here. * cplusplus-update-frontend: - Print file paths of written files to stdout. - Convenience: Use default values referencing the appropriate dirs and files. * cplusplus-mkvisitor: - Take only one argument, namely the path to AST.h. - Convenience: Use default path to AST.h. * cplusplus-ast2png: - Make it run without LD_LIBRARY_PATH. - As the name suggests, generate image files in png format (needs 'dot' from graphviz). - Convenience: Read from stdin, which useful for small snippets. Change-Id: I79c4061fce4a1571c0588dfedd50d4a70715d9df Reviewed-by: Erik Verbruggen --- .../cplusplus-tools-utils/cplusplus-tools-utils.h | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/tools/cplusplus-tools-utils/cplusplus-tools-utils.h (limited to 'src/tools/cplusplus-tools-utils/cplusplus-tools-utils.h') diff --git a/src/tools/cplusplus-tools-utils/cplusplus-tools-utils.h b/src/tools/cplusplus-tools-utils/cplusplus-tools-utils.h new file mode 100644 index 0000000000..bbc0c4834b --- /dev/null +++ b/src/tools/cplusplus-tools-utils/cplusplus-tools-utils.h @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + + +#ifndef CPLUSPLUSTOOLSUTILS_H +#define CPLUSPLUSTOOLSUTILS_H + +#include +#include +#include + +namespace CplusplusToolsUtils { + +QString portableExecutableName(const QString &executable); +void executeCommand(const QString &command, const QStringList &arguments, const QString &outputFile, + bool verbose = false); + +// Preprocess a file by calling an external compiler in preprocessor mode (-E, /E). +class SystemPreprocessor +{ +public: + SystemPreprocessor(bool verbose = false); + void preprocessFile(const QString &inputFile, const QString &outputFile) const; + +private: + void check() const; + + QMap m_knownCompilers; + QString m_compiler; // Compiler that will be called in preprocessor mode + QStringList m_compilerArguments; + bool m_verbose; +}; + +} // namespace + +#endif // CPLUSPLUSTOOLSUTILS_H -- cgit v1.2.1