2011-10-22 21:43:34 +04: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.
|
|
|
|
============================================================================*/
|
|
|
|
|
2013-09-24 22:07:45 +04:00
|
|
|
#ifndef cmQtAutoGenerators_h
|
|
|
|
#define cmQtAutoGenerators_h
|
2011-08-07 14:02:46 +04:00
|
|
|
|
2011-08-07 19:16:00 +04:00
|
|
|
class cmGlobalGenerator;
|
|
|
|
class cmMakefile;
|
|
|
|
|
2013-09-24 22:07:45 +04:00
|
|
|
class cmQtAutoGenerators
|
2011-08-07 14:02:46 +04:00
|
|
|
{
|
|
|
|
public:
|
2013-09-24 22:07:45 +04:00
|
|
|
cmQtAutoGenerators();
|
2014-02-25 02:38:30 +04:00
|
|
|
bool Run(const std::string& targetDirectory, const std::string& config);
|
2011-08-07 19:16:00 +04:00
|
|
|
|
2013-11-04 13:32:27 +04:00
|
|
|
bool InitializeAutogenTarget(cmTarget* target);
|
2013-12-10 18:45:27 +04:00
|
|
|
void SetupAutoGenerateTarget(cmTarget const* target);
|
2014-01-24 19:32:34 +04:00
|
|
|
void SetupSourceFiles(cmTarget const* target);
|
2011-08-09 11:18:37 +04:00
|
|
|
|
2011-08-07 19:16:00 +04:00
|
|
|
private:
|
2013-12-10 18:45:27 +04:00
|
|
|
void SetupAutoMocTarget(cmTarget const* target,
|
2013-10-11 16:26:56 +04:00
|
|
|
const std::string &autogenTargetName,
|
|
|
|
std::map<std::string, std::string> &configIncludes,
|
|
|
|
std::map<std::string, std::string> &configDefines);
|
2013-12-10 18:45:27 +04:00
|
|
|
void SetupAutoUicTarget(cmTarget const* target,
|
2013-11-20 17:54:39 +04:00
|
|
|
std::map<std::string, std::string> &configUicOptions);
|
2013-12-10 18:45:27 +04:00
|
|
|
void SetupAutoRccTarget(cmTarget const* target);
|
2013-10-11 16:26:56 +04:00
|
|
|
|
2013-10-02 15:50:31 +04:00
|
|
|
bool ReadAutogenInfoFile(cmMakefile* makefile,
|
2014-02-25 02:38:30 +04:00
|
|
|
const std::string& targetDirectory,
|
2014-02-10 07:48:34 +04:00
|
|
|
const std::string& config);
|
2011-08-07 19:16:00 +04:00
|
|
|
bool ReadOldMocDefinitionsFile(cmMakefile* makefile,
|
2014-02-25 02:38:30 +04:00
|
|
|
const std::string& targetDirectory);
|
|
|
|
void WriteOldMocDefinitionsFile(const std::string& targetDirectory);
|
2011-08-07 19:16:00 +04:00
|
|
|
|
2012-08-27 23:39:50 +04:00
|
|
|
std::string MakeCompileSettingsString(cmMakefile* makefile);
|
|
|
|
|
2013-10-11 15:28:08 +04:00
|
|
|
bool RunAutogen(cmMakefile* makefile);
|
2011-08-08 17:20:13 +04:00
|
|
|
bool GenerateMoc(const std::string& sourceFile,
|
|
|
|
const std::string& mocFileName);
|
2014-03-25 04:26:27 +04:00
|
|
|
bool GenerateUi(const std::string& realName, const std::string& uiFileName);
|
2013-09-15 16:41:07 +04:00
|
|
|
bool GenerateQrc();
|
2011-08-10 23:00:53 +04:00
|
|
|
void ParseCppFile(const std::string& absFilename,
|
2014-09-17 03:23:57 +04:00
|
|
|
const std::vector<std::string>& headerExtensions,
|
|
|
|
std::map<std::string, std::string>& includedMocs,
|
|
|
|
std::map<std::string, std::vector<std::string> >& includedUis);
|
2011-12-02 23:59:44 +04:00
|
|
|
void StrictParseCppFile(const std::string& absFilename,
|
2014-09-17 03:23:57 +04:00
|
|
|
const std::vector<std::string>& headerExtensions,
|
|
|
|
std::map<std::string, std::string>& includedMocs,
|
|
|
|
std::map<std::string, std::vector<std::string> >& includedUis);
|
2011-12-02 23:38:14 +04:00
|
|
|
void SearchHeadersForCppFile(const std::string& absFilename,
|
2013-02-10 20:49:42 +04:00
|
|
|
const std::vector<std::string>& headerExtensions,
|
|
|
|
std::set<std::string>& absHeaders);
|
2011-12-02 23:38:14 +04:00
|
|
|
|
2011-10-22 21:38:39 +04:00
|
|
|
void ParseHeaders(const std::set<std::string>& absHeaders,
|
2014-09-17 03:23:57 +04:00
|
|
|
const std::map<std::string, std::string>& includedMocs,
|
|
|
|
std::map<std::string, std::string>& notIncludedMocs,
|
|
|
|
std::map<std::string, std::vector<std::string> >& includedUis);
|
2013-07-25 11:24:53 +04:00
|
|
|
|
|
|
|
void ParseForUic(const std::string& fileName,
|
2014-09-17 03:23:57 +04:00
|
|
|
const std::string& contentsString,
|
|
|
|
std::map<std::string, std::vector<std::string> >& includedUis);
|
2013-07-25 11:24:53 +04:00
|
|
|
|
|
|
|
void ParseForUic(const std::string& fileName,
|
2014-09-17 03:23:57 +04:00
|
|
|
std::map<std::string, std::vector<std::string> >& includedUis);
|
2011-08-10 23:00:53 +04:00
|
|
|
|
2011-08-08 17:20:13 +04:00
|
|
|
void Init();
|
|
|
|
|
2013-02-10 20:49:42 +04:00
|
|
|
std::string Join(const std::vector<std::string>& lst, char separator);
|
2011-08-08 17:20:13 +04:00
|
|
|
bool EndsWith(const std::string& str, const std::string& with);
|
|
|
|
bool StartsWith(const std::string& str, const std::string& with);
|
2011-08-07 19:16:00 +04:00
|
|
|
|
2013-07-25 11:24:53 +04:00
|
|
|
void MergeUicOptions(std::vector<std::string> &opts,
|
|
|
|
const std::vector<std::string> &fileOpts, bool isQt5);
|
|
|
|
|
2013-09-15 16:41:07 +04:00
|
|
|
void MergeRccOptions(std::vector<std::string> &opts,
|
|
|
|
const std::vector<std::string> &fileOpts, bool isQt5);
|
|
|
|
|
2014-09-23 02:54:08 +04:00
|
|
|
std::string GetRccExecutable(cmTarget const* target);
|
|
|
|
|
2014-09-17 04:42:30 +04:00
|
|
|
std::string ListQt5RccInputs(cmSourceFile* sf, cmTarget const* target,
|
|
|
|
std::vector<std::string>& depends);
|
|
|
|
|
|
|
|
std::string ListQt4RccInputs(cmSourceFile* sf,
|
|
|
|
std::vector<std::string>& depends);
|
|
|
|
|
|
|
|
bool InputFilesNewerThanQrc(const std::string& qrcFile,
|
|
|
|
const std::string& rccOutput);
|
|
|
|
|
2011-08-07 19:16:00 +04:00
|
|
|
std::string QtMajorVersion;
|
2011-08-08 17:20:13 +04:00
|
|
|
std::string Sources;
|
2014-09-23 02:57:48 +04:00
|
|
|
std::vector<std::string> RccSources;
|
2013-07-25 11:24:53 +04:00
|
|
|
std::string SkipMoc;
|
|
|
|
std::string SkipUic;
|
2011-08-09 11:11:53 +04:00
|
|
|
std::string Headers;
|
2011-08-08 17:20:13 +04:00
|
|
|
bool IncludeProjectDirsBefore;
|
|
|
|
std::string Srcdir;
|
|
|
|
std::string Builddir;
|
|
|
|
std::string MocExecutable;
|
2013-07-25 11:24:53 +04:00
|
|
|
std::string UicExecutable;
|
2013-09-15 16:41:07 +04:00
|
|
|
std::string RccExecutable;
|
2011-08-08 17:20:13 +04:00
|
|
|
std::string MocCompileDefinitionsStr;
|
|
|
|
std::string MocIncludesStr;
|
2011-11-01 17:33:11 +04:00
|
|
|
std::string MocOptionsStr;
|
2011-08-08 17:20:13 +04:00
|
|
|
std::string ProjectBinaryDir;
|
|
|
|
std::string ProjectSourceDir;
|
|
|
|
std::string TargetName;
|
2014-04-17 12:50:50 +04:00
|
|
|
std::string OriginTargetName;
|
2011-08-08 17:20:13 +04:00
|
|
|
|
2012-08-27 23:39:50 +04:00
|
|
|
std::string CurrentCompileSettingsStr;
|
|
|
|
std::string OldCompileSettingsStr;
|
2011-08-08 17:20:13 +04:00
|
|
|
|
|
|
|
std::string OutMocCppFilename;
|
|
|
|
std::list<std::string> MocIncludes;
|
|
|
|
std::list<std::string> MocDefinitions;
|
2011-11-01 17:33:11 +04:00
|
|
|
std::vector<std::string> MocOptions;
|
2013-07-25 11:24:53 +04:00
|
|
|
std::vector<std::string> UicTargetOptions;
|
|
|
|
std::map<std::string, std::string> UicOptions;
|
2013-09-15 16:41:07 +04:00
|
|
|
std::map<std::string, std::string> RccOptions;
|
2014-09-17 04:42:30 +04:00
|
|
|
std::map<std::string, std::vector<std::string> > RccInputs;
|
2011-08-08 17:20:13 +04:00
|
|
|
|
|
|
|
bool Verbose;
|
2011-08-14 18:43:04 +04:00
|
|
|
bool ColorOutput;
|
2011-08-08 17:20:13 +04:00
|
|
|
bool RunMocFailed;
|
2013-07-25 11:24:53 +04:00
|
|
|
bool RunUicFailed;
|
2013-09-15 16:41:07 +04:00
|
|
|
bool RunRccFailed;
|
2011-08-08 17:20:13 +04:00
|
|
|
bool GenerateAll;
|
2011-12-14 01:11:47 +04:00
|
|
|
bool RelaxedMode;
|
2011-08-07 19:16:00 +04:00
|
|
|
|
2011-08-07 14:02:46 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|