cmake/Source/cmQtAutoGenerators.h

147 lines
5.0 KiB
C
Raw Normal View History

2012-02-18 12:40:36 +02:00
/*============================================================================
CMake - Cross Platform Makefile Generator
Copyright 2004-2011 Kitware, Inc.
Copyright 2011 Alexander Neundorf (neundorf@kde.org)
Distributed under the OSI-approved BSD License (the "License");
see accompanying file Copyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License for more information.
============================================================================*/
2014-08-03 19:52:23 +02:00
#ifndef cmQtAutoGenerators_h
#define cmQtAutoGenerators_h
2012-02-18 12:40:36 +02:00
2016-07-09 11:21:54 +02:00
#include "cmStandardIncludes.h"
2015-08-17 11:37:30 +02:00
#include <list>
2015-11-17 17:22:37 +01:00
#include <map>
2016-07-09 11:21:54 +02:00
#include <string>
#include <vector>
2015-08-17 11:37:30 +02:00
2012-02-18 12:40:36 +02:00
class cmMakefile;
2014-08-03 19:52:23 +02:00
class cmQtAutoGenerators
2012-02-18 12:40:36 +02:00
{
public:
2014-08-03 19:52:23 +02:00
cmQtAutoGenerators();
2015-04-27 22:25:09 +02:00
bool Run(const std::string& targetDirectory, const std::string& config);
2012-02-18 12:40:36 +02:00
private:
2014-08-03 19:52:23 +02:00
bool ReadAutogenInfoFile(cmMakefile* makefile,
2015-04-27 22:25:09 +02:00
const std::string& targetDirectory,
const std::string& config);
2012-02-18 12:40:36 +02:00
bool ReadOldMocDefinitionsFile(cmMakefile* makefile,
2015-04-27 22:25:09 +02:00
const std::string& targetDirectory);
void WriteOldMocDefinitionsFile(const std::string& targetDirectory);
2012-02-18 12:40:36 +02:00
2013-03-16 19:13:01 +02:00
std::string MakeCompileSettingsString(cmMakefile* makefile);
2014-08-03 19:52:23 +02:00
bool RunAutogen(cmMakefile* makefile);
2016-07-09 11:21:54 +02:00
bool GenerateMocFiles(
const std::map<std::string, std::string>& includedMocs,
const std::map<std::string, std::string>& notIncludedMocs);
2012-02-18 12:40:36 +02:00
bool GenerateMoc(const std::string& sourceFile,
const std::string& mocFileName);
2016-07-09 11:21:54 +02:00
bool GenerateUiFiles(
const std::map<std::string, std::vector<std::string> >& includedUis);
bool GenerateUi(const std::string& realName, const std::string& uiInputFile,
const std::string& uiOutputFile);
bool GenerateQrcFiles();
bool GenerateQrc(const std::string& qrcInputFile,
const std::string& qrcOutputFile);
void ParseCppFile(
const std::string& absFilename,
const std::vector<std::string>& headerExtensions,
std::map<std::string, std::string>& includedMocs,
std::map<std::string, std::vector<std::string> >& includedUis);
void StrictParseCppFile(
const std::string& absFilename,
const std::vector<std::string>& headerExtensions,
std::map<std::string, std::string>& includedMocs,
std::map<std::string, std::vector<std::string> >& includedUis);
void SearchHeadersForCppFile(
const std::string& absFilename,
const std::vector<std::string>& headerExtensions,
std::set<std::string>& absHeaders);
void ParseHeaders(
const std::set<std::string>& absHeaders,
const std::map<std::string, std::string>& includedMocs,
std::map<std::string, std::string>& notIncludedMocs,
std::map<std::string, std::vector<std::string> >& includedUis);
void ParseForUic(
const std::string& fileName, const std::string& contentsString,
std::map<std::string, std::vector<std::string> >& includedUis);
void ParseForUic(
const std::string& fileName,
std::map<std::string, std::vector<std::string> >& includedUis);
2012-02-18 12:40:36 +02:00
void Init();
2016-07-09 11:21:54 +02:00
bool NameCollisionTest(const std::map<std::string, std::string>& genFiles,
std::multimap<std::string, std::string>& collisions);
void NameCollisionLog(
const std::string& message,
const std::multimap<std::string, std::string>& collisions);
void LogInfo(const std::string& message);
void LogError(const std::string& message);
void LogCommand(const std::vector<std::string>& command);
std::string JoinExts(const std::vector<std::string>& lst);
2014-08-03 19:52:23 +02:00
2016-07-09 11:21:54 +02:00
static void MergeUicOptions(std::vector<std::string>& opts,
const std::vector<std::string>& fileOpts,
bool isQt5);
2012-02-18 12:40:36 +02:00
2015-04-27 22:25:09 +02:00
bool InputFilesNewerThanQrc(const std::string& qrcFile,
const std::string& rccOutput);
2012-02-18 12:40:36 +02:00
std::string QtMajorVersion;
std::string Sources;
2015-04-27 22:25:09 +02:00
std::vector<std::string> RccSources;
2014-08-03 19:52:23 +02:00
std::string SkipMoc;
std::string SkipUic;
2012-02-18 12:40:36 +02:00
std::string Headers;
std::string Srcdir;
std::string Builddir;
std::string MocExecutable;
2014-08-03 19:52:23 +02:00
std::string UicExecutable;
std::string RccExecutable;
2012-02-18 12:40:36 +02:00
std::string MocCompileDefinitionsStr;
std::string MocIncludesStr;
std::string MocOptionsStr;
std::string ProjectBinaryDir;
std::string ProjectSourceDir;
std::string TargetName;
2015-04-27 22:25:09 +02:00
std::string OriginTargetName;
2012-02-18 12:40:36 +02:00
2013-03-16 19:13:01 +02:00
std::string CurrentCompileSettingsStr;
std::string OldCompileSettingsStr;
2012-02-18 12:40:36 +02:00
2016-07-09 11:21:54 +02:00
std::string OutMocCppFilenameRel;
2016-08-20 09:57:23 +02:00
std::string OutMocCppFilename;
2012-02-18 12:40:36 +02:00
std::list<std::string> MocIncludes;
std::list<std::string> MocDefinitions;
std::vector<std::string> MocOptions;
2014-08-03 19:52:23 +02:00
std::vector<std::string> UicTargetOptions;
std::map<std::string, std::string> UicOptions;
std::map<std::string, std::string> RccOptions;
2015-04-27 22:25:09 +02:00
std::map<std::string, std::vector<std::string> > RccInputs;
2012-02-18 12:40:36 +02:00
2015-11-17 17:22:37 +01:00
bool IncludeProjectDirsBefore;
2012-02-18 12:40:36 +02:00
bool Verbose;
bool ColorOutput;
bool RunMocFailed;
2014-08-03 19:52:23 +02:00
bool RunUicFailed;
bool RunRccFailed;
2012-02-18 12:40:36 +02:00
bool GenerateAll;
bool RelaxedMode;
};
#endif