[Cmake-commits] CMake branch, next, updated. v2.8.12-3885-ge99bad6
Stephen Kelly
steveire at gmail.com
Fri Oct 11 15:10:12 EDT 2013
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, next has been updated
via e99bad68b8097c0faf5bf6e72dbe2953359e431d (commit)
via 309b9a8154b03e0b3f295455b50a661f5f3230ae (commit)
via 0a49395fd0a2ad6475b7ccc08ebda8496c5e1655 (commit)
via 0cec622e4bf301daa4f819226a843d6f0ae26c62 (commit)
via d836d2721692d2c041560a2609d6bf35e40900f5 (commit)
via 1e01d3054701eef0e94e76c4f1956a15fda5bbdb (commit)
via 671f2a43656ed8e866325ba74d752e4ff2b1a88d (commit)
via 79a9cd4ded4ca47b50bc94da6fb481cf135006ff (commit)
via 48f82f72ca51b89f812a5ae8819556ec51c5113a (commit)
via b0fd78d1607b44420a32b3062fd1e5d6828bfa85 (commit)
via 98c741ee6540f12929c8d3513d010574bb2c4bf9 (commit)
via fd3d68309bc3597e5de458cc1e176cf226853003 (commit)
via a44b51e239b543851c4c60ecefce29e766e7ba84 (commit)
via 18d84cf52d551004487080b73eae932ed007a141 (commit)
via c3296847a2fdcddf592cdf4ae3216b40fb3e99c1 (commit)
via fda05c84090a6972a802240e7748dd8a5fa877f0 (commit)
via 1e7e04fb9b73cdb49db04c3bb4aa0abeaff14fcd (commit)
via fa67e541d005903f7be909f945138f95b458a9ea (commit)
via 5f9d341e72b78d3873b0d256e3a5f1f5be330777 (commit)
via 8f8a13c5fc1e435c4781f017f559f65f3d89f38a (commit)
from 2857fd506b632088aa548490ea15be694ac51e7d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e99bad68b8097c0faf5bf6e72dbe2953359e431d
commit e99bad68b8097c0faf5bf6e72dbe2953359e431d
Merge: 2857fd5 309b9a8
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Oct 11 15:10:02 2013 -0400
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Oct 11 15:10:02 2013 -0400
Merge topic 'Qt-auto-generators' into next
309b9a8 Add automatic rcc invocation for Qt.
0a49395 Add automatic uic invocation for Qt.
0cec622 Record which files are skipped by automoc.
d836d27 Run the main executable created in the autogen tests.
1e01d30 Rename the QtAutomoc tests to QtAutogen.
671f2a4 Add extra checks for the AUTOMOC target property.
79a9cd4 Update output messages for generic use.
48f82f7 Rename RunAutomoc to RunAutogen.
b0fd78d Extract an SetupAutoMocTarget method.
98c741e Rename the AutomocInfo.cmake file to be more generic.
fd3d683 Move some makefile definitions up away from moc-specific code.
a44b51e Add the AUTOGEN_TARGETS_FOLDER and obsolete AUTOMOC_TARGETS_FOLDER.
18d84cf Rename some variables to reflect broader scope.
c329684 Rename method to reflect generic use.
fda05c8 Rename local variable to reflect generic use.
1e7e04f Move variable set to where it is used.
...
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=309b9a8154b03e0b3f295455b50a661f5f3230ae
commit 309b9a8154b03e0b3f295455b50a661f5f3230ae
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Sun Sep 15 14:41:07 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 21:03:18 2013 +0200
Add automatic rcc invocation for Qt.
This replaces the need to invoke qt4_add_resources by allowing
adding the source .qrc file directly to the target sources.
diff --git a/Modules/AutogenInfo.cmake.in b/Modules/AutogenInfo.cmake.in
index 4f855f7..d56fb02 100644
--- a/Modules/AutogenInfo.cmake.in
+++ b/Modules/AutogenInfo.cmake.in
@@ -1,4 +1,5 @@
set(AM_SOURCES @_moc_files@ )
+set(AM_RCC_SOURCES @_rcc_files@ )
set(AM_SKIP_MOC @_skip_moc@ )
set(AM_SKIP_UIC @_skip_uic@ )
set(AM_HEADERS @_moc_headers@ )
@@ -10,6 +11,7 @@ set(AM_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@/")
set(AM_CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@/")
set(AM_QT_MOC_EXECUTABLE "@_qt_moc_executable@")
set(AM_QT_UIC_EXECUTABLE "@_qt_uic_executable@")
+set(AM_QT_RCC_EXECUTABLE "@_qt_rcc_executable@")
set(AM_CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@/")
set(AM_CMAKE_CURRENT_BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@/")
set(AM_QT_VERSION_MAJOR "@_target_qt_version@")
@@ -17,3 +19,5 @@ set(AM_TARGET_NAME @_moc_target_name@)
set(AM_RELAXED_MODE "@_moc_relaxed_mode@")
set(AM_UIC_OPTIONS_FILES "@_qt_uic_options_files@")
set(AM_UIC_OPTIONS_OPTIONS "@_qt_uic_options_options@")
+set(AM_RCC_OPTIONS_FILES "@_qt_rcc_options_files@")
+set(AM_RCC_OPTIONS_OPTIONS "@_qt_rcc_options_options@")
diff --git a/Source/cmDocumentVariables.cxx b/Source/cmDocumentVariables.cxx
index 2f4d154..051c146 100644
--- a/Source/cmDocumentVariables.cxx
+++ b/Source/cmDocumentVariables.cxx
@@ -1345,6 +1345,15 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
"Variables that Control the Build");
cm->DefineProperty
+ ("CMAKE_AUTORCC", cmProperty::VARIABLE,
+ "Whether to handle rcc automatically for Qt targets.",
+ "This variable is used to initialize the "
+ "AUTORCC property on all the targets. "
+ "See that target property for additional information.",
+ false,
+ "Variables that Control the Build");
+
+ cm->DefineProperty
("CMAKE_AUTOMOC_MOC_OPTIONS", cmProperty::VARIABLE,
"Additional options for moc when using automoc (see CMAKE_AUTOMOC).",
"This variable is used to initialize the "
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 1635eb8..d3509a0 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -1170,7 +1170,8 @@ void cmGlobalGenerator::CreateQtAutoGeneratorsTargets()
target.GetType() == cmTarget::OBJECT_LIBRARY)
{
if((target.GetPropertyAsBool("AUTOMOC")
- || target.GetPropertyAsBool("AUTOUIC"))
+ || target.GetPropertyAsBool("AUTOUIC")
+ || target.GetPropertyAsBool("AUTORCC"))
&& !target.IsImported())
{
cmQtAutoGenerators autogen;
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index 4dbbb56..5babaf6 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -118,6 +118,7 @@ cmQtAutoGenerators::cmQtAutoGenerators()
,ColorOutput(true)
,RunMocFailed(false)
,RunUicFailed(false)
+,RunRccFailed(false)
,GenerateAll(false)
{
@@ -264,9 +265,18 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
{
toolNames.push_back("uic");
}
+ if (target->GetPropertyAsBool("AUTORCC"))
+ {
+ toolNames.push_back("rcc");
+ }
std::string tools = toolNames[0];
toolNames.erase(toolNames.begin());
+ while (toolNames.size() > 1)
+ {
+ tools += ", " + toolNames[0];
+ toolNames.erase(toolNames.begin());
+ }
if (toolNames.size() == 1)
{
tools += " and " + toolNames[0];
@@ -341,6 +351,10 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
{
this->SetupAutoUicTarget(target);
}
+ if (target->GetPropertyAsBool("AUTORCC"))
+ {
+ this->SetupAutoRccTarget(target);
+ }
const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT");
std::string inputFile = cmakeRoot;
@@ -602,6 +616,104 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget* target)
}
}
+void cmQtAutoGenerators::SetupAutoRccTarget(cmTarget* target)
+{
+ std::string _rcc_files;
+ const char* sepRccFiles = "";
+ cmMakefile *makefile = target->GetMakefile();
+
+ std::vector<cmSourceFile*> newFiles;
+
+ const std::vector<cmSourceFile*>& srcFiles = target->GetSourceFiles();
+
+ std::string rccFileFiles;
+ std::string rccFileOptions;
+ const char *sep = "";
+
+ for(std::vector<cmSourceFile*>::const_iterator fileIt = srcFiles.begin();
+ fileIt != srcFiles.end();
+ ++fileIt)
+ {
+ cmSourceFile* sf = *fileIt;
+ std::string ext = sf->GetExtension();
+ if (ext == "qrc")
+ {
+ std::string absFile = cmsys::SystemTools::GetRealPath(
+ sf->GetFullPath().c_str());
+ bool skip = cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTORCC"));
+
+ if (!skip)
+ {
+ _rcc_files += sepRccFiles;
+ _rcc_files += absFile;
+ sepRccFiles = ";";
+
+ std::string basename = cmsys::SystemTools::
+ GetFilenameWithoutLastExtension(absFile);
+
+ std::string rcc_output_file = makefile->GetCurrentOutputDirectory();
+ rcc_output_file += "/qrc_" + basename + ".cpp";
+ makefile->AppendProperty("ADDITIONAL_MAKE_CLEAN_FILES",
+ rcc_output_file.c_str(), false);
+ cmSourceFile* rccCppSource
+ = makefile->GetOrCreateSource(rcc_output_file.c_str(), true);
+ newFiles.push_back(rccCppSource);
+
+ if (const char *prop = sf->GetProperty("AUTORCC_OPTIONS"))
+ {
+ rccFileFiles += sep;
+ rccFileFiles += absFile;
+ rccFileOptions += sep;
+ std::string opts = prop;
+ cmSystemTools::ReplaceString(opts, ";", "@list_sep@");
+ rccFileOptions += opts;
+ sep = ";";
+ }
+ }
+ }
+ }
+
+ for(std::vector<cmSourceFile*>::const_iterator fileIt = newFiles.begin();
+ fileIt != newFiles.end();
+ ++fileIt)
+ {
+ target->AddSourceFile(*fileIt);
+ }
+
+ makefile->AddDefinition("_rcc_files",
+ cmLocalGenerator::EscapeForCMake(_rcc_files.c_str()).c_str());
+
+ makefile->AddDefinition("_qt_rcc_options_files",
+ cmLocalGenerator::EscapeForCMake(rccFileFiles.c_str()).c_str());
+ makefile->AddDefinition("_qt_rcc_options_options",
+ cmLocalGenerator::EscapeForCMake(rccFileOptions.c_str()).c_str());
+
+ const char *qtRcc = makefile->GetSafeDefinition("QT_RCC_EXECUTABLE");
+ makefile->AddDefinition("_qt_rcc_executable", qtRcc);
+
+ const char* targetName = target->GetName();
+ const char *qtVersion = makefile->GetDefinition("_target_qt_version");
+ if (strcmp(qtVersion, "5") == 0)
+ {
+ cmTarget *qt5Rcc = makefile->FindTargetToUse("Qt5::rcc");
+ if (!qt5Rcc)
+ {
+ cmSystemTools::Error("Qt5::rcc target not found ",
+ targetName);
+ return;
+ }
+ makefile->AddDefinition("_qt_rcc_executable", qt5Rcc->GetLocation(0));
+ }
+ else
+ {
+ if (strcmp(qtVersion, "4") != 0)
+ {
+ cmSystemTools::Error("The CMAKE_AUTORCC feature supports only Qt 4 and "
+ "Qt 5 ", targetName);
+ }
+ }
+}
+
bool cmQtAutoGenerators::Run(const char* targetDirectory, const char *config)
{
bool success = true;
@@ -666,6 +778,7 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(cmMakefile* makefile,
"AM_Qt5Core_VERSION_MAJOR");
}
this->Sources = makefile->GetSafeDefinition("AM_SOURCES");
+ this->RccSources = makefile->GetSafeDefinition("AM_RCC_SOURCES");
this->SkipMoc = makefile->GetSafeDefinition("AM_SKIP_MOC");
this->SkipUic = makefile->GetSafeDefinition("AM_SKIP_UIC");
this->Headers = makefile->GetSafeDefinition("AM_HEADERS");
@@ -675,6 +788,7 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(cmMakefile* makefile,
this->Builddir = makefile->GetSafeDefinition("AM_CMAKE_CURRENT_BINARY_DIR");
this->MocExecutable = makefile->GetSafeDefinition("AM_QT_MOC_EXECUTABLE");
this->UicExecutable = makefile->GetSafeDefinition("AM_QT_UIC_EXECUTABLE");
+ this->RccExecutable = makefile->GetSafeDefinition("AM_QT_RCC_EXECUTABLE");
std::string compileDefsPropOrig = "AM_MOC_COMPILE_DEFINITIONS";
std::string compileDefsProp = compileDefsPropOrig;
if(config)
@@ -722,6 +836,28 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(cmMakefile* makefile,
this->UicOptions[*fileIt] = *optionIt;
}
}
+ {
+ const char *rccOptionsFiles
+ = makefile->GetSafeDefinition("AM_RCC_OPTIONS_FILES");
+ const char *rccOptionsOptions
+ = makefile->GetSafeDefinition("AM_RCC_OPTIONS_OPTIONS");
+ std::vector<std::string> rccFilesVec;
+ cmSystemTools::ExpandListArgument(rccOptionsFiles, rccFilesVec);
+ std::vector<std::string> rccOptionsVec;
+ cmSystemTools::ExpandListArgument(rccOptionsOptions, rccOptionsVec);
+ if (rccFilesVec.size() != rccOptionsVec.size())
+ {
+ return false;
+ }
+ for (std::vector<std::string>::iterator fileIt = rccFilesVec.begin(),
+ optionIt = rccOptionsVec.begin();
+ fileIt != rccFilesVec.end();
+ ++fileIt, ++optionIt)
+ {
+ cmSystemTools::ReplaceString(*optionIt, "@list_sep@", ";");
+ this->RccOptions[*fileIt] = *optionIt;
+ }
+ }
this->CurrentCompileSettingsStr = this->MakeCompileSettingsString(makefile);
this->RelaxedMode = makefile->IsOn("AM_RELAXED_MODE");
@@ -972,6 +1108,11 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
this->GenerateUi(*it);
}
+ if(!this->RccExecutable.empty())
+ {
+ this->GenerateQrc();
+ }
+
cmsys_ios::stringstream outStream;
outStream << "/* This file is autogenerated, do not edit*/\n";
@@ -1009,6 +1150,11 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
std::cerr << "uic failed..."<< std::endl;
return false;
}
+ if (this->RunRccFailed)
+ {
+ std::cerr << "rcc failed..."<< std::endl;
+ return false;
+ }
outStream.flush();
std::string automocSource = outStream.str();
if (!automocCppChanged)
@@ -1593,6 +1739,71 @@ bool cmQtAutoGenerators::GenerateUi(const std::string& uiFileName)
return true;
}
+bool cmQtAutoGenerators::GenerateQrc()
+{
+ std::vector<std::string> sourceFiles;
+ cmSystemTools::ExpandListArgument(this->RccSources, sourceFiles);
+
+ for(std::vector<std::string>::const_iterator si = sourceFiles.begin();
+ si != sourceFiles.end(); ++si)
+ {
+ std::string ext = cmsys::SystemTools::GetFilenameLastExtension(*si);
+
+ if (ext != ".qrc")
+ {
+ continue;
+ }
+ std::vector<cmStdString> command;
+ command.push_back(this->RccExecutable);
+
+ std::string basename = cmsys::SystemTools::
+ GetFilenameWithoutLastExtension(*si);
+
+ std::string rcc_output_file = "qrc_" + basename + ".cpp";
+
+ std::string options;
+ std::map<std::string, std::string>::const_iterator optionIt
+ = this->RccOptions.find(*si);
+ if (optionIt != this->RccOptions.end())
+ {
+ std::vector<std::string> opts;
+ cmSystemTools::ExpandListArgument(optionIt->second, opts);
+ for(std::vector<std::string>::const_iterator optIt = opts.begin();
+ optIt != opts.end();
+ ++optIt)
+ {
+ command.push_back(*optIt);
+ }
+ }
+
+ command.push_back("-o");
+ command.push_back(rcc_output_file);
+ command.push_back(*si);
+
+ if (this->Verbose)
+ {
+ for(std::vector<cmStdString>::const_iterator cmdIt = command.begin();
+ cmdIt != command.end();
+ ++cmdIt)
+ {
+ std::cout << *cmdIt << " ";
+ }
+ std::cout << std::endl;
+ }
+ std::string output;
+ int retVal = 0;
+ bool result = cmSystemTools::RunSingleCommand(command, &output, &retVal);
+ if (!result || retVal)
+ {
+ std::cerr << "AUTORCC: error: process for " << rcc_output_file <<
+ " failed:\n" << output << std::endl;
+ this->RunRccFailed = true;
+ cmSystemTools::RemoveFile(rcc_output_file.c_str());
+ }
+ }
+ return true;
+}
+
std::string cmQtAutoGenerators::Join(const std::vector<std::string>& lst,
char separator)
{
diff --git a/Source/cmQtAutoGenerators.h b/Source/cmQtAutoGenerators.h
index 4e8960f..15cfe0d 100644
--- a/Source/cmQtAutoGenerators.h
+++ b/Source/cmQtAutoGenerators.h
@@ -32,6 +32,7 @@ private:
std::map<std::string, std::string> &configIncludes,
std::map<std::string, std::string> &configDefines);
void SetupAutoUicTarget(cmTarget* target);
+ void SetupAutoRccTarget(cmTarget* target);
cmGlobalGenerator* CreateGlobalGenerator(cmake* cm,
const char* targetDirectory);
@@ -49,6 +50,7 @@ private:
bool GenerateMoc(const std::string& sourceFile,
const std::string& mocFileName);
bool GenerateUi(const std::string& uiFileName);
+ bool GenerateQrc();
void ParseCppFile(const std::string& absFilename,
const std::vector<std::string>& headerExtensions,
std::map<std::string, std::string>& includedMocs,
@@ -82,6 +84,7 @@ private:
std::string QtMajorVersion;
std::string Sources;
+ std::string RccSources;
std::string SkipMoc;
std::string SkipUic;
std::string Headers;
@@ -90,6 +93,7 @@ private:
std::string Builddir;
std::string MocExecutable;
std::string UicExecutable;
+ std::string RccExecutable;
std::string MocCompileDefinitionsStr;
std::string MocIncludesStr;
std::string MocOptionsStr;
@@ -105,11 +109,13 @@ private:
std::list<std::string> MocDefinitions;
std::vector<std::string> MocOptions;
std::map<std::string, std::string> UicOptions;
+ std::map<std::string, std::string> RccOptions;
bool Verbose;
bool ColorOutput;
bool RunMocFailed;
bool RunUicFailed;
+ bool RunRccFailed;
bool GenerateAll;
bool RelaxedMode;
diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx
index 5514fef..1a103c2 100644
--- a/Source/cmSourceFile.cxx
+++ b/Source/cmSourceFile.cxx
@@ -417,6 +417,16 @@ void cmSourceFile::DefineProperties(cmake *cm)
"By default it is empty.");
cm->DefineProperty
+ ("AUTORCC_OPTIONS", cmProperty::SOURCE_FILE,
+ "Additional options for rcc when using autorcc (see the AUTORCC target "
+ "property)",
+ "This property holds additional command line options "
+ "which will be used when rcc is executed during the build via autorcc, "
+ "i.e. it is equivalent to the optional OPTIONS argument of the "
+ "qt4_add_resources() macro.\n"
+ "By default it is empty.");
+
+ cm->DefineProperty
("COMPILE_FLAGS", cmProperty::SOURCE_FILE,
"Additional flags to be added when compiling this source file.",
"These flags will be added to the list of compile flags when "
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 140fc98..3812421 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -268,6 +268,22 @@ void cmTarget::DefineProperties(cmake *cm)
"autouic targets together in an IDE, e.g. in MSVS.");
cm->DefineProperty
+ ("AUTORCC", cmProperty::TARGET,
+ "Should the target be processed with autorcc (for Qt projects).",
+ "AUTORCC is a boolean specifying whether CMake will handle "
+ "the Qt rcc code generator automatically, i.e. without having to use "
+ "the QT4_ADD_RESOURCES() or QT5_ADD_RESOURCES() macro. Currently Qt4 "
+ "and Qt5 are supported. "
+ "When this property is set to TRUE, CMake will handle .qrc files added "
+ "as target sources at build time and invoke rcc accordingly. "
+ "This property is initialized by the value of the variable "
+ "CMAKE_AUTORCC if it is set when a target is created.\n"
+ "Additional command line options for rcc can be set via the "
+ "RCC_OPTIONS source file property on the .qrc file.\n"
+ "The global property AUTOGEN_TARGETS_FOLDER can be used to group the"
+ "autorcc targets together in an IDE, e.g. in MSVS.");
+
+ cm->DefineProperty
("AUTOMOC_MOC_OPTIONS", cmProperty::TARGET,
"Additional options for moc when using automoc (see the AUTOMOC property)",
"This property is only used if the AUTOMOC property is set to TRUE for "
@@ -1667,6 +1683,7 @@ void cmTarget::SetMakefile(cmMakefile* mf)
this->SetPropertyDefault("OSX_ARCHITECTURES", 0);
this->SetPropertyDefault("AUTOMOC", 0);
this->SetPropertyDefault("AUTOUIC", 0);
+ this->SetPropertyDefault("AUTORCC", 0);
this->SetPropertyDefault("AUTOMOC_MOC_OPTIONS", 0);
this->SetPropertyDefault("LINK_DEPENDS_NO_SHARED", 0);
this->SetPropertyDefault("LINK_INTERFACE_LIBRARIES", 0);
diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt
index b7849c1..41a82aa 100644
--- a/Tests/QtAutogen/CMakeLists.txt
+++ b/Tests/QtAutogen/CMakeLists.txt
@@ -36,6 +36,7 @@ add_definitions(-DFOO -DSomeDefine="Barx")
set(CMAKE_AUTOMOC_RELAXED_MODE TRUE)
set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTORCC ON)
# create an executable and two library targets, each requiring automoc:
add_library(codeeditorLib STATIC codeeditor.cpp)
@@ -43,7 +44,9 @@ add_library(codeeditorLib STATIC codeeditor.cpp)
add_library(privateSlot OBJECT private_slot.cpp)
add_executable(QtAutogen main.cpp calwidget.cpp foo.cpp blub.cpp bar.cpp abc.cpp
- xyz.cpp yaf.cpp gadget.cpp $<TARGET_OBJECTS:privateSlot>)
+ xyz.cpp yaf.cpp gadget.cpp $<TARGET_OBJECTS:privateSlot>
+ test.qrc resourcetester.cpp
+)
set_target_properties(QtAutogen codeeditorLib privateSlot PROPERTIES AUTOMOC TRUE)
diff --git a/Tests/QtAutogen/main.cpp b/Tests/QtAutogen/main.cpp
index 39597ba..060d04b 100644
--- a/Tests/QtAutogen/main.cpp
+++ b/Tests/QtAutogen/main.cpp
@@ -39,6 +39,7 @@
****************************************************************************/
#include <QApplication>
+#include <QTimer>
#include "codeeditor.h"
#include "calwidget.h"
@@ -49,6 +50,7 @@
#include "xyz.h"
#include "yaf.h"
#include "libC.h"
+#include "resourcetester.h"
int main(int argv, char **args)
{
@@ -81,5 +83,9 @@ int main(int argv, char **args)
LibC lc;
lc.foo();
+ ResourceTester rt;
+
+ QTimer::singleShot(0, &rt, SLOT(doTest()));
+
return app.exec();
}
diff --git a/Tests/QtAutogen/resourcetester.cpp b/Tests/QtAutogen/resourcetester.cpp
new file mode 100644
index 0000000..43314e1
--- /dev/null
+++ b/Tests/QtAutogen/resourcetester.cpp
@@ -0,0 +1,21 @@
+
+#include "resourcetester.h"
+
+#include <QDebug>
+#include <QApplication>
+#include <QFile>
+#include <QTimer>
+
+ResourceTester::ResourceTester(QObject *parent)
+ : QObject(parent)
+{
+
+}
+
+void ResourceTester::doTest()
+{
+ if (!QFile::exists(":/CMakeLists.txt"))
+ qApp->exit(EXIT_FAILURE);
+
+ QTimer::singleShot(0, qApp, SLOT(quit()));
+}
diff --git a/Tests/QtAutogen/resourcetester.h b/Tests/QtAutogen/resourcetester.h
new file mode 100644
index 0000000..b02cb4e
--- /dev/null
+++ b/Tests/QtAutogen/resourcetester.h
@@ -0,0 +1,17 @@
+
+#ifndef RESOURCE_TESTER_H
+#define RESOURCE_TESTER_H
+
+#include <QObject>
+
+class ResourceTester : public QObject
+{
+ Q_OBJECT
+public:
+ explicit ResourceTester(QObject *parent = 0);
+
+private slots:
+ void doTest();
+};
+
+#endif
diff --git a/Tests/QtAutogen/test.qrc b/Tests/QtAutogen/test.qrc
new file mode 100644
index 0000000..c3d4e3c
--- /dev/null
+++ b/Tests/QtAutogen/test.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>CMakeLists.txt</file>
+</qresource>
+</RCC>
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0a49395fd0a2ad6475b7ccc08ebda8496c5e1655
commit 0a49395fd0a2ad6475b7ccc08ebda8496c5e1655
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Jul 25 09:24:53 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 21:01:01 2013 +0200
Add automatic uic invocation for Qt.
The source files are already processed by cmQtAutomoc to look for
moc includes, so extend that to also look for ui_ includes and
find corresponding .ui files to process.
This replaces the need to invoke qt4_wrap_ui().
As the ui files are not likely to be part of the SOURCES of the
target, store the options associated with them separately in the
cmMakefile for querying during the autogen run.
diff --git a/Modules/AutogenInfo.cmake.in b/Modules/AutogenInfo.cmake.in
index 19663ff..4f855f7 100644
--- a/Modules/AutogenInfo.cmake.in
+++ b/Modules/AutogenInfo.cmake.in
@@ -1,5 +1,6 @@
set(AM_SOURCES @_moc_files@ )
set(AM_SKIP_MOC @_skip_moc@ )
+set(AM_SKIP_UIC @_skip_uic@ )
set(AM_HEADERS @_moc_headers@ )
set(AM_MOC_COMPILE_DEFINITIONS @_moc_compile_defs@)
set(AM_MOC_INCLUDES @_moc_incs@)
@@ -8,8 +9,11 @@ set(AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE "@CMAKE_INCLUDE_DIRECTORIES_PROJ
set(AM_CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@/")
set(AM_CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@/")
set(AM_QT_MOC_EXECUTABLE "@_qt_moc_executable@")
+set(AM_QT_UIC_EXECUTABLE "@_qt_uic_executable@")
set(AM_CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@/")
set(AM_CMAKE_CURRENT_BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@/")
set(AM_QT_VERSION_MAJOR "@_target_qt_version@")
set(AM_TARGET_NAME @_moc_target_name@)
set(AM_RELAXED_MODE "@_moc_relaxed_mode@")
+set(AM_UIC_OPTIONS_FILES "@_qt_uic_options_files@")
+set(AM_UIC_OPTIONS_OPTIONS "@_qt_uic_options_options@")
diff --git a/Source/cmDocumentVariables.cxx b/Source/cmDocumentVariables.cxx
index 58634ea..2f4d154 100644
--- a/Source/cmDocumentVariables.cxx
+++ b/Source/cmDocumentVariables.cxx
@@ -1336,6 +1336,15 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
"Variables that Control the Build");
cm->DefineProperty
+ ("CMAKE_AUTOUIC", cmProperty::VARIABLE,
+ "Whether to handle uic automatically for Qt targets.",
+ "This variable is used to initialize the "
+ "AUTOUIC property on all the targets. "
+ "See that target property for additional information.",
+ false,
+ "Variables that Control the Build");
+
+ cm->DefineProperty
("CMAKE_AUTOMOC_MOC_OPTIONS", cmProperty::VARIABLE,
"Additional options for moc when using automoc (see CMAKE_AUTOMOC).",
"This variable is used to initialize the "
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 067240c..1635eb8 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -1169,7 +1169,9 @@ void cmGlobalGenerator::CreateQtAutoGeneratorsTargets()
target.GetType() == cmTarget::MODULE_LIBRARY ||
target.GetType() == cmTarget::OBJECT_LIBRARY)
{
- if(target.GetPropertyAsBool("AUTOMOC") && !target.IsImported())
+ if((target.GetPropertyAsBool("AUTOMOC")
+ || target.GetPropertyAsBool("AUTOUIC"))
+ && !target.IsImported())
{
cmQtAutoGenerators autogen;
if(autogen.InitializeMocSourceFile(&target))
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 40e55c2..b94740c 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -4682,3 +4682,13 @@ void cmMakefile::RecordPolicies(cmPolicies::PolicyMap& pm)
pm[pid] = this->GetPolicyStatus(pid);
}
}
+
+void cmMakefile::AddQtUiFileWithOptions(cmSourceFile *sf)
+{
+ this->QtUiFilesWithOptions.push_back(sf);
+}
+
+std::vector<cmSourceFile*> cmMakefile::GetQtUiFilesWithOptions() const
+{
+ return this->QtUiFilesWithOptions;
+}
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index 362b066..dc62944 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -899,6 +899,9 @@ public:
std::set<cmStdString> const & GetSystemIncludeDirectories() const
{ return this->SystemIncludeDirectories; }
+ void AddQtUiFileWithOptions(cmSourceFile *sf);
+ std::vector<cmSourceFile*> GetQtUiFilesWithOptions() const;
+
protected:
// add link libraries and directories to the target
void AddGlobalLinkInformation(const char* name, cmTarget& target);
@@ -1074,6 +1077,8 @@ private:
cmSourceFile* source);
void UpdateOutputToSourceMap(std::string const& output,
cmSourceFile* source);
+
+ std::vector<cmSourceFile*> QtUiFilesWithOptions;
};
//----------------------------------------------------------------------------
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index 779a1b1..4dbbb56 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -117,6 +117,7 @@ cmQtAutoGenerators::cmQtAutoGenerators()
:Verbose(cmsys::SystemTools::GetEnv("VERBOSE") != 0)
,ColorOutput(true)
,RunMocFailed(false)
+,RunUicFailed(false)
,GenerateAll(false)
{
@@ -254,7 +255,22 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
"", makefile->GetCurrentOutputDirectory());
std::vector<std::string> depends;
- std::string tools = "moc";
+ std::vector<std::string> toolNames;
+ if (target->GetPropertyAsBool("AUTOMOC"))
+ {
+ toolNames.push_back("moc");
+ }
+ if (target->GetPropertyAsBool("AUTOUIC"))
+ {
+ toolNames.push_back("uic");
+ }
+
+ std::string tools = toolNames[0];
+ toolNames.erase(toolNames.begin());
+ if (toolNames.size() == 1)
+ {
+ tools += " and " + toolNames[0];
+ }
std::string autogenComment = "Automatic " + tools + " for target ";
autogenComment += targetName;
@@ -321,6 +337,10 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
this->SetupAutoMocTarget(target, autogenTargetName,
configIncludes, configDefines);
}
+ if (target->GetPropertyAsBool("AUTOUIC"))
+ {
+ this->SetupAutoUicTarget(target);
+ }
const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT");
std::string inputFile = cmakeRoot;
@@ -498,6 +518,90 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget* target,
}
}
+void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget* target)
+{
+ cmMakefile *makefile = target->GetMakefile();
+
+ const char *qtUic = makefile->GetSafeDefinition("QT_UIC_EXECUTABLE");
+ makefile->AddDefinition("_qt_uic_executable", qtUic);
+
+ const std::vector<cmSourceFile*>& srcFiles = target->GetSourceFiles();
+
+ std::string skip_uic;
+ const char *sep = "";
+
+ for(std::vector<cmSourceFile*>::const_iterator fileIt = srcFiles.begin();
+ fileIt != srcFiles.end();
+ ++fileIt)
+ {
+ cmSourceFile* sf = *fileIt;
+ std::string absFile = cmsys::SystemTools::GetRealPath(
+ sf->GetFullPath().c_str());
+ bool skip = cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTOUIC"));
+
+ if (skip)
+ {
+ skip_uic += sep;
+ skip_uic += absFile;
+ sep = ";";
+ }
+ }
+
+ makefile->AddDefinition("_skip_uic",
+ cmLocalGenerator::EscapeForCMake(skip_uic.c_str()).c_str());
+
+ std::vector<cmSourceFile*> uiFilesWithOptions
+ = makefile->GetQtUiFilesWithOptions();
+
+ std::string uiFileFiles;
+ std::string uiFileOptions;
+ sep = "";
+
+ for(std::vector<cmSourceFile*>::const_iterator fileIt =
+ uiFilesWithOptions.begin();
+ fileIt != uiFilesWithOptions.end();
+ ++fileIt)
+ {
+ cmSourceFile* sf = *fileIt;
+ std::string absFile = cmsys::SystemTools::GetRealPath(
+ sf->GetFullPath().c_str());
+ uiFileFiles += sep;
+ uiFileFiles += absFile;
+ uiFileOptions += sep;
+ std::string opts = sf->GetProperty("AUTOUIC_OPTIONS");
+ cmSystemTools::ReplaceString(opts, ";", "@list_sep@");
+ uiFileOptions += opts;
+ sep = ";";
+ }
+
+ makefile->AddDefinition("_qt_uic_options_files",
+ cmLocalGenerator::EscapeForCMake(uiFileFiles.c_str()).c_str());
+ makefile->AddDefinition("_qt_uic_options_options",
+ cmLocalGenerator::EscapeForCMake(uiFileOptions.c_str()).c_str());
+
+ const char* targetName = target->GetName();
+ const char *qtVersion = makefile->GetDefinition("_target_qt_version");
+ if (strcmp(qtVersion, "5") == 0)
+ {
+ cmTarget *qt5Uic = makefile->FindTargetToUse("Qt5::uic");
+ if (!qt5Uic)
+ {
+ cmSystemTools::Error("Qt5::uic target not found ",
+ targetName);
+ return;
+ }
+ makefile->AddDefinition("_qt_uic_executable", qt5Uic->GetLocation(0));
+ }
+ else
+ {
+ if (strcmp(qtVersion, "4") != 0)
+ {
+ cmSystemTools::Error("The CMAKE_AUTOUIC feature supports only Qt 4 and "
+ "Qt 5 ", targetName);
+ }
+ }
+}
+
bool cmQtAutoGenerators::Run(const char* targetDirectory, const char *config)
{
bool success = true;
@@ -562,12 +666,15 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(cmMakefile* makefile,
"AM_Qt5Core_VERSION_MAJOR");
}
this->Sources = makefile->GetSafeDefinition("AM_SOURCES");
+ this->SkipMoc = makefile->GetSafeDefinition("AM_SKIP_MOC");
+ this->SkipUic = makefile->GetSafeDefinition("AM_SKIP_UIC");
this->Headers = makefile->GetSafeDefinition("AM_HEADERS");
this->IncludeProjectDirsBefore = makefile->IsOn(
"AM_CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE");
this->Srcdir = makefile->GetSafeDefinition("AM_CMAKE_CURRENT_SOURCE_DIR");
this->Builddir = makefile->GetSafeDefinition("AM_CMAKE_CURRENT_BINARY_DIR");
this->MocExecutable = makefile->GetSafeDefinition("AM_QT_MOC_EXECUTABLE");
+ this->UicExecutable = makefile->GetSafeDefinition("AM_QT_UIC_EXECUTABLE");
std::string compileDefsPropOrig = "AM_MOC_COMPILE_DEFINITIONS";
std::string compileDefsProp = compileDefsPropOrig;
if(config)
@@ -593,6 +700,28 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(cmMakefile* makefile,
this->ProjectSourceDir = makefile->GetSafeDefinition("AM_CMAKE_SOURCE_DIR");
this->TargetName = makefile->GetSafeDefinition("AM_TARGET_NAME");
+ {
+ const char *uicOptionsFiles
+ = makefile->GetSafeDefinition("AM_UIC_OPTIONS_FILES");
+ const char *uicOptionsOptions
+ = makefile->GetSafeDefinition("AM_UIC_OPTIONS_OPTIONS");
+ std::vector<std::string> uicFilesVec;
+ cmSystemTools::ExpandListArgument(uicOptionsFiles, uicFilesVec);
+ std::vector<std::string> uicOptionsVec;
+ cmSystemTools::ExpandListArgument(uicOptionsOptions, uicOptionsVec);
+ if (uicFilesVec.size() != uicOptionsVec.size())
+ {
+ return false;
+ }
+ for (std::vector<std::string>::iterator fileIt = uicFilesVec.begin(),
+ optionIt = uicOptionsVec.begin();
+ fileIt != uicFilesVec.end();
+ ++fileIt, ++optionIt)
+ {
+ cmSystemTools::ReplaceString(*optionIt, "@list_sep@", ";");
+ this->UicOptions[*fileIt] = *optionIt;
+ }
+ }
this->CurrentCompileSettingsStr = this->MakeCompileSettingsString(makefile);
this->RelaxedMode = makefile->IsOn("AM_RELAXED_MODE");
@@ -765,10 +894,18 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
const std::vector<std::string>& headerExtensions =
makefile->GetHeaderExtensions();
+ std::vector<std::string> includedUis;
+ std::vector<std::string> skippedUis;
+ std::vector<std::string> uicSkipped;
+ cmSystemTools::ExpandListArgument(this->SkipUic, uicSkipped);
+
for (std::vector<std::string>::const_iterator it = sourceFiles.begin();
it != sourceFiles.end();
++it)
{
+ const bool skipUic = std::find(uicSkipped.begin(), uicSkipped.end(), *it)
+ != uicSkipped.end();
+ std::vector<std::string>& uiFiles = skipUic ? skippedUis : includedUis;
const std::string &absFilename = *it;
if (this->Verbose)
{
@@ -776,15 +913,37 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
}
if (this->RelaxedMode)
{
- this->ParseCppFile(absFilename, headerExtensions, includedMocs);
+ this->ParseCppFile(absFilename, headerExtensions, includedMocs,
+ uiFiles);
}
else
{
- this->StrictParseCppFile(absFilename, headerExtensions, includedMocs);
+ this->StrictParseCppFile(absFilename, headerExtensions, includedMocs,
+ uiFiles);
}
this->SearchHeadersForCppFile(absFilename, headerExtensions, headerFiles);
}
+ {
+ std::vector<std::string> mocSkipped;
+ cmSystemTools::ExpandListArgument(this->SkipMoc, mocSkipped);
+ for (std::vector<std::string>::const_iterator it = mocSkipped.begin();
+ it != mocSkipped.end();
+ ++it)
+ {
+ if (std::find(uicSkipped.begin(), uicSkipped.end(), *it)
+ != uicSkipped.end())
+ {
+ const std::string &absFilename = *it;
+ if (this->Verbose)
+ {
+ std::cout << "AUTOGEN: Checking " << absFilename << std::endl;
+ }
+ this->ParseForUic(absFilename, includedUis);
+ }
+ }
+ }
+
std::vector<std::string> headerFilesVec;
cmSystemTools::ExpandListArgument(this->Headers, headerFilesVec);
for (std::vector<std::string>::const_iterator it = headerFilesVec.begin();
@@ -796,7 +955,7 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
// key = moc source filepath, value = moc output filename
std::map<std::string, std::string> notIncludedMocs;
- this->ParseHeaders(headerFiles, includedMocs, notIncludedMocs);
+ this->ParseHeaders(headerFiles, includedMocs, notIncludedMocs, includedUis);
// run moc on all the moc's that are #included in source files
for(std::map<std::string, std::string>::const_iterator
@@ -806,6 +965,12 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
{
this->GenerateMoc(it->first, it->second);
}
+ for(std::vector<std::string>::const_iterator it = includedUis.begin();
+ it != includedUis.end();
+ ++it)
+ {
+ this->GenerateUi(*it);
+ }
cmsys_ios::stringstream outStream;
outStream << "/* This file is autogenerated, do not edit*/\n";
@@ -838,6 +1003,12 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
std::cerr << "moc failed..."<< std::endl;
return false;
}
+
+ if (this->RunUicFailed)
+ {
+ std::cerr << "uic failed..."<< std::endl;
+ return false;
+ }
outStream.flush();
std::string automocSource = outStream.str();
if (!automocCppChanged)
@@ -864,7 +1035,8 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
const std::vector<std::string>& headerExtensions,
- std::map<std::string, std::string>& includedMocs)
+ std::map<std::string, std::string>& includedMocs,
+ std::vector<std::string> &includedUis)
{
cmsys::RegularExpression mocIncludeRegExp(
"[\n][ \t]*#[ \t]*include[ \t]+"
@@ -1005,6 +1177,7 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
matchOffset += mocIncludeRegExp.end();
} while(mocIncludeRegExp.find(contentsString.c_str() + matchOffset));
}
+ this->ParseForUic(absFilename, contentsString, includedUis);
// In this case, check whether the scanned file itself contains a Q_OBJECT.
// If this is the case, the moc_foo.cpp should probably be generated from
@@ -1045,7 +1218,8 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename,
const std::vector<std::string>& headerExtensions,
- std::map<std::string, std::string>& includedMocs)
+ std::map<std::string, std::string>& includedMocs,
+ std::vector<std::string>& includedUis)
{
cmsys::RegularExpression mocIncludeRegExp(
"[\n][ \t]*#[ \t]*include[ \t]+"
@@ -1136,6 +1310,7 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename,
matchOffset += mocIncludeRegExp.end();
} while(mocIncludeRegExp.find(contentsString.c_str() + matchOffset));
}
+ this->ParseForUic(absFilename, contentsString, includedUis);
// In this case, check whether the scanned file itself contains a Q_OBJECT.
// If this is the case, the moc_foo.cpp should probably be generated from
@@ -1156,6 +1331,61 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename,
}
+void cmQtAutoGenerators::ParseForUic(const std::string& absFilename,
+ std::vector<std::string>& includedUis)
+{
+ if (this->UicExecutable.empty())
+ {
+ return;
+ }
+ const std::string contentsString = this->ReadAll(absFilename);
+ if (contentsString.empty())
+ {
+ std::cerr << "AUTOGEN: warning: " << absFilename << ": file is empty\n"
+ << std::endl;
+ return;
+ }
+ this->ParseForUic(absFilename, contentsString, includedUis);
+}
+
+
+void cmQtAutoGenerators::ParseForUic(const std::string&,
+ const std::string& contentsString,
+ std::vector<std::string>& includedUis)
+{
+ if (this->UicExecutable.empty())
+ {
+ return;
+ }
+ cmsys::RegularExpression uiIncludeRegExp(
+ "[\n][ \t]*#[ \t]*include[ \t]+"
+ "[\"<](([^ \">]+/)?ui_[^ \">/]+\\.h)[\">]");
+
+ std::string::size_type matchOffset = 0;
+
+ matchOffset = 0;
+ if ((strstr(contentsString.c_str(), "ui_") != NULL)
+ && (uiIncludeRegExp.find(contentsString)))
+ {
+ do
+ {
+ const std::string currentUi = uiIncludeRegExp.match(1);
+
+ std::string basename = cmsys::SystemTools::
+ GetFilenameWithoutLastExtension(currentUi);
+
+ // basename should be the part of the ui filename used for
+ // finding the correct header, so we need to remove the ui_ part
+ basename = basename.substr(3);
+
+ includedUis.push_back(basename);
+
+ matchOffset += uiIncludeRegExp.end();
+ } while(uiIncludeRegExp.find(contentsString.c_str() + matchOffset));
+ }
+}
+
+
void cmQtAutoGenerators::SearchHeadersForCppFile(const std::string& absFilename,
const std::vector<std::string>& headerExtensions,
std::set<std::string>& absHeaders)
@@ -1194,13 +1424,15 @@ void cmQtAutoGenerators::SearchHeadersForCppFile(const std::string& absFilename,
void cmQtAutoGenerators::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::string>& notIncludedMocs,
+ std::vector<std::string>& includedUis)
{
for(std::set<std::string>::const_iterator hIt=absHeaders.begin();
hIt!=absHeaders.end();
++hIt)
{
const std::string& headerName = *hIt;
+ const std::string contents = this->ReadAll(headerName);
if (includedMocs.find(headerName) == includedMocs.end())
{
@@ -1213,7 +1445,6 @@ void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders,
GetFilenameWithoutLastExtension(headerName);
const std::string currentMoc = "moc_" + basename + ".cpp";
- const std::string contents = this->ReadAll(headerName);
std::string macroName;
if (requiresMocing(contents, macroName))
{
@@ -1221,11 +1452,10 @@ void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders,
notIncludedMocs[headerName] = currentMoc;
}
}
+ this->ParseForUic(headerName, contents, includedUis);
}
-
}
-
bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile,
const std::string& mocFileName)
{
@@ -1302,6 +1532,66 @@ bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile,
return false;
}
+bool cmQtAutoGenerators::GenerateUi(const std::string& uiFileName)
+{
+ if (!cmsys::SystemTools::FileExists(this->Builddir.c_str(), false))
+ {
+ cmsys::SystemTools::MakeDirectory(this->Builddir.c_str());
+ }
+
+ std::string ui_output_file = "ui_" + uiFileName + ".h";
+ std::string ui_input_file = uiFileName + ".ui";
+
+ std::string msg = "Generating ";
+ msg += ui_output_file;
+ cmSystemTools::MakefileColorEcho(cmsysTerminal_Color_ForegroundBlue
+ |cmsysTerminal_Color_ForegroundBold,
+ msg.c_str(), true, this->ColorOutput);
+
+ std::vector<cmStdString> command;
+ command.push_back(this->UicExecutable);
+
+ std::string options;
+ std::map<std::string, std::string>::const_iterator optionIt
+ = this->UicOptions.find(this->ProjectSourceDir + ui_input_file);
+ if (optionIt != this->UicOptions.end())
+ {
+ std::vector<std::string> opts;
+ cmSystemTools::ExpandListArgument(optionIt->second, opts);
+ for(std::vector<std::string>::const_iterator optIt = opts.begin();
+ optIt != opts.end();
+ ++optIt)
+ {
+ command.push_back(*optIt);
+ }
+ }
+
+ command.push_back("-o");
+ command.push_back(ui_output_file);
+ command.push_back(this->ProjectSourceDir + ui_input_file);
+
+ if (this->Verbose)
+ {
+ for(std::vector<cmStdString>::const_iterator cmdIt = command.begin();
+ cmdIt != command.end();
+ ++cmdIt)
+ {
+ std::cout << *cmdIt << " ";
+ }
+ std::cout << std::endl;
+ }
+ std::string output;
+ int retVal = 0;
+ bool result = cmSystemTools::RunSingleCommand(command, &output, &retVal);
+ if (!result || retVal)
+ {
+ std::cerr << "AUTOUIC: error: process for " << ui_output_file <<
+ " failed:\n" << output << std::endl;
+ this->RunUicFailed = true;
+ cmSystemTools::RemoveFile(ui_output_file.c_str());
+ }
+ return true;
+}
std::string cmQtAutoGenerators::Join(const std::vector<std::string>& lst,
char separator)
diff --git a/Source/cmQtAutoGenerators.h b/Source/cmQtAutoGenerators.h
index fe38b05..4e8960f 100644
--- a/Source/cmQtAutoGenerators.h
+++ b/Source/cmQtAutoGenerators.h
@@ -31,6 +31,7 @@ private:
const std::string &autogenTargetName,
std::map<std::string, std::string> &configIncludes,
std::map<std::string, std::string> &configDefines);
+ void SetupAutoUicTarget(cmTarget* target);
cmGlobalGenerator* CreateGlobalGenerator(cmake* cm,
const char* targetDirectory);
@@ -47,19 +48,30 @@ private:
bool RunAutogen(cmMakefile* makefile);
bool GenerateMoc(const std::string& sourceFile,
const std::string& mocFileName);
+ bool GenerateUi(const std::string& uiFileName);
void ParseCppFile(const std::string& absFilename,
const std::vector<std::string>& headerExtensions,
- std::map<std::string, std::string>& includedMocs);
+ std::map<std::string, std::string>& includedMocs,
+ 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::string>& includedMocs,
+ 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::string>& notIncludedMocs,
+ std::vector<std::string>& includedUis);
+
+ void ParseForUic(const std::string& fileName,
+ const std::string& contentsString,
+ std::vector<std::string>& includedUis);
+
+ void ParseForUic(const std::string& fileName,
+ std::vector<std::string>& includedUis);
void Init();
@@ -70,11 +82,14 @@ private:
std::string QtMajorVersion;
std::string Sources;
+ std::string SkipMoc;
+ std::string SkipUic;
std::string Headers;
bool IncludeProjectDirsBefore;
std::string Srcdir;
std::string Builddir;
std::string MocExecutable;
+ std::string UicExecutable;
std::string MocCompileDefinitionsStr;
std::string MocIncludesStr;
std::string MocOptionsStr;
@@ -89,10 +104,12 @@ private:
std::list<std::string> MocIncludes;
std::list<std::string> MocDefinitions;
std::vector<std::string> MocOptions;
+ std::map<std::string, std::string> UicOptions;
bool Verbose;
bool ColorOutput;
bool RunMocFailed;
+ bool RunUicFailed;
bool GenerateAll;
bool RelaxedMode;
diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx
index 8bb7d96..5514fef 100644
--- a/Source/cmSourceFile.cxx
+++ b/Source/cmSourceFile.cxx
@@ -288,6 +288,17 @@ void cmSourceFile::SetProperty(const char* prop, const char* value)
}
this->Properties.SetProperty(prop, value, cmProperty::SOURCE_FILE);
+
+ std::string ext =
+ cmSystemTools::GetFilenameLastExtension(this->Location.GetName());
+ if (ext == ".ui")
+ {
+ cmMakefile* mf = this->Location.GetMakefile();
+ if (strcmp(prop, "AUTOUIC_OPTIONS") == 0)
+ {
+ mf->AddQtUiFileWithOptions(this);
+ }
+ }
}
//----------------------------------------------------------------------------
@@ -396,6 +407,16 @@ void cmSourceFile::DefineProperties(cmake *cm)
"only used by some tools that wrap classes into other languages.");
cm->DefineProperty
+ ("AUTOUIC_OPTIONS", cmProperty::SOURCE_FILE,
+ "Additional options for uic when using autouic (see the AUTOUIC target "
+ "property)",
+ "This property holds additional command line options "
+ "which will be used when uic is executed during the build via autouic, "
+ "i.e. it is equivalent to the optional OPTIONS argument of the "
+ "qt4_wrap_ui() macro.\n"
+ "By default it is empty.");
+
+ cm->DefineProperty
("COMPILE_FLAGS", cmProperty::SOURCE_FILE,
"Additional flags to be added when compiling this source file.",
"These flags will be added to the list of compile flags when "
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 5ec0284..140fc98 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -249,6 +249,25 @@ void cmTarget::DefineProperties(cmake *cm)
"automoc targets together in an IDE, e.g. in MSVS.");
cm->DefineProperty
+ ("AUTOUIC", cmProperty::TARGET,
+ "Should the target be processed with autouic (for Qt projects).",
+ "AUTOUIC is a boolean specifying whether CMake will handle "
+ "the Qt uic code generator automatically, i.e. without having to use "
+ "the QT4_WRAP_UI() or QT5_WRAP_UI() macro. Currently Qt4 and Qt5 are "
+ "supported. "
+ "When this property is set to TRUE, CMake will scan the source files "
+ "at build time and invoke uic accordingly. "
+ "If an #include statement like #include \"ui_foo.h\" is found in "
+ "foo.cpp, a foo.ui file is expected next to foo.cpp, and uic is "
+ "run on the foo.ui file. "
+ "This property is initialized by the value of the variable "
+ "CMAKE_AUTOUIC if it is set when a target is created.\n"
+ "Additional command line options for uic can be set via the "
+ "UIC_OPTIONS source file property on the foo.ui file.\n"
+ "The global property AUTOGEN_TARGETS_FOLDER can be used to group the"
+ "autouic targets together in an IDE, e.g. in MSVS.");
+
+ cm->DefineProperty
("AUTOMOC_MOC_OPTIONS", cmProperty::TARGET,
"Additional options for moc when using automoc (see the AUTOMOC property)",
"This property is only used if the AUTOMOC property is set to TRUE for "
@@ -1647,6 +1666,7 @@ void cmTarget::SetMakefile(cmMakefile* mf)
this->SetPropertyDefault("GNUtoMS", 0);
this->SetPropertyDefault("OSX_ARCHITECTURES", 0);
this->SetPropertyDefault("AUTOMOC", 0);
+ this->SetPropertyDefault("AUTOUIC", 0);
this->SetPropertyDefault("AUTOMOC_MOC_OPTIONS", 0);
this->SetPropertyDefault("LINK_DEPENDS_NO_SHARED", 0);
this->SetPropertyDefault("LINK_INTERFACE_LIBRARIES", 0);
diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt
index 540ba1a..b7849c1 100644
--- a/Tests/QtAutogen/CMakeLists.txt
+++ b/Tests/QtAutogen/CMakeLists.txt
@@ -35,6 +35,8 @@ add_definitions(-DFOO -DSomeDefine="Barx")
# enable relaxed mode so automoc can handle all the special cases:
set(CMAKE_AUTOMOC_RELAXED_MODE TRUE)
+set(CMAKE_AUTOUIC ON)
+
# create an executable and two library targets, each requiring automoc:
add_library(codeeditorLib STATIC codeeditor.cpp)
diff --git a/Tests/QtAutogen/calwidget.cpp b/Tests/QtAutogen/calwidget.cpp
index cbfa5a8..defde20 100644
--- a/Tests/QtAutogen/calwidget.cpp
+++ b/Tests/QtAutogen/calwidget.cpp
@@ -49,7 +49,10 @@
#include "calwidget.h"
+ #include "ui_calwidget.h"
+
Window::Window()
+ : ui(new Ui::Window)
{
createPreviewGroupBox();
createGeneralOptionsGroupBox();
diff --git a/Tests/QtAutogen/calwidget.h b/Tests/QtAutogen/calwidget.h
index 8447389..d21a473 100644
--- a/Tests/QtAutogen/calwidget.h
+++ b/Tests/QtAutogen/calwidget.h
@@ -52,6 +52,11 @@
class QGroupBox;
class QLabel;
+ namespace Ui
+ {
+ class Window;
+ }
+
class Window : public QWidget
{
Q_OBJECT
@@ -116,6 +121,8 @@
QCheckBox *firstFridayCheckBox;
QCheckBox *mayFirstCheckBox;
+
+ Ui::Window *ui;
};
#endif
diff --git a/Tests/QtAutogen/calwidget.ui b/Tests/QtAutogen/calwidget.ui
new file mode 100644
index 0000000..1c245ca
--- /dev/null
+++ b/Tests/QtAutogen/calwidget.ui
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Window</class>
+ <widget class="QWidget" name="Window">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <widget class="QPushButton" name="pushButton">
+ <property name="geometry">
+ <rect>
+ <x>90</x>
+ <y>180</y>
+ <width>94</width>
+ <height>24</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>PushButton</string>
+ </property>
+ </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0cec622e4bf301daa4f819226a843d6f0ae26c62
commit 0cec622e4bf301daa4f819226a843d6f0ae26c62
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Oct 11 15:04:15 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:33:55 2013 +0200
Record which files are skipped by automoc.
They may not be skipped by autouic.
diff --git a/Modules/AutogenInfo.cmake.in b/Modules/AutogenInfo.cmake.in
index 9cff735..19663ff 100644
--- a/Modules/AutogenInfo.cmake.in
+++ b/Modules/AutogenInfo.cmake.in
@@ -1,4 +1,5 @@
set(AM_SOURCES @_moc_files@ )
+set(AM_SKIP_MOC @_skip_moc@ )
set(AM_HEADERS @_moc_headers@ )
set(AM_MOC_COMPILE_DEFINITIONS @_moc_compile_defs@)
set(AM_MOC_INCLUDES @_moc_incs@)
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index e57d366..779a1b1 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -378,6 +378,9 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget* target,
const std::vector<cmSourceFile*>& srcFiles = target->GetSourceFiles();
+ std::string skip_moc;
+ const char *sep = "";
+
for(std::vector<cmSourceFile*>::const_iterator fileIt = srcFiles.begin();
fileIt != srcFiles.end();
++fileIt)
@@ -388,22 +391,31 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget* target,
bool skip = cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTOMOC"));
bool generated = cmSystemTools::IsOn(sf->GetPropertyForUser("GENERATED"));
- if ((skip==false) && (generated == false))
+ if (!generated)
{
- std::string ext = sf->GetExtension();
- cmSystemTools::FileFormat fileType = cmSystemTools::GetFileFormat(
- ext.c_str());
- if (fileType == cmSystemTools::CXX_FILE_FORMAT)
+ if (skip)
{
- _moc_files += sepFiles;
- _moc_files += absFile;
- sepFiles = ";";
+ skip_moc += sep;
+ skip_moc += absFile;
+ sep = ";";
}
- else if (fileType == cmSystemTools::HEADER_FILE_FORMAT)
+ else
{
- _moc_headers += sepHeaders;
- _moc_headers += absFile;
- sepHeaders = ";";
+ std::string ext = sf->GetExtension();
+ cmSystemTools::FileFormat fileType = cmSystemTools::GetFileFormat(
+ ext.c_str());
+ if (fileType == cmSystemTools::CXX_FILE_FORMAT)
+ {
+ _moc_files += sepFiles;
+ _moc_files += absFile;
+ sepFiles = ";";
+ }
+ else if (fileType == cmSystemTools::HEADER_FILE_FORMAT)
+ {
+ _moc_headers += sepHeaders;
+ _moc_headers += absFile;
+ sepHeaders = ";";
+ }
}
}
}
@@ -414,6 +426,8 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget* target,
cmLocalGenerator::EscapeForCMake(_moc_options.c_str()).c_str());
makefile->AddDefinition("_moc_files",
cmLocalGenerator::EscapeForCMake(_moc_files.c_str()).c_str());
+ makefile->AddDefinition("_skip_moc",
+ cmLocalGenerator::EscapeForCMake(skip_moc.c_str()).c_str());
makefile->AddDefinition("_moc_headers",
cmLocalGenerator::EscapeForCMake(_moc_headers.c_str()).c_str());
bool relaxedMode = makefile->IsOn("CMAKE_AUTOMOC_RELAXED_MODE");
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d836d2721692d2c041560a2609d6bf35e40900f5
commit d836d2721692d2c041560a2609d6bf35e40900f5
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Oct 11 20:16:43 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:27:39 2013 +0200
Run the main executable created in the autogen tests.
Don't try to show the windows, which would require a gui capable test
machine, and that's not guaranteed.
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 602976e..b95ac80 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1026,7 +1026,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
--build-exe-dir "${CMake_BINARY_DIR}/Tests/Qt5Autogen"
--force-new-ctest-process
--build-options -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE} -DQT_TEST_VERSION=5
- --test-command ${CMAKE_CTEST_COMMAND} -V
+ --test-command QtAutogen
)
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt5Autogen")
endif()
@@ -1040,7 +1040,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
--build-exe-dir "${CMake_BINARY_DIR}/Tests/Qt4Autogen"
--force-new-ctest-process
--build-options -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE} -DQT_TEST_VERSION=4
- --test-command ${CMAKE_CTEST_COMMAND} -V
+ --test-command QtAutogen
)
list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt4Autogen")
diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt
index a7f553f..540ba1a 100644
--- a/Tests/QtAutogen/CMakeLists.txt
+++ b/Tests/QtAutogen/CMakeLists.txt
@@ -40,10 +40,10 @@ add_library(codeeditorLib STATIC codeeditor.cpp)
add_library(privateSlot OBJECT private_slot.cpp)
-add_executable(foo main.cpp calwidget.cpp foo.cpp blub.cpp bar.cpp abc.cpp
+add_executable(QtAutogen main.cpp calwidget.cpp foo.cpp blub.cpp bar.cpp abc.cpp
xyz.cpp yaf.cpp gadget.cpp $<TARGET_OBJECTS:privateSlot>)
-set_target_properties(foo codeeditorLib privateSlot PROPERTIES AUTOMOC TRUE)
+set_target_properties(QtAutogen codeeditorLib privateSlot PROPERTIES AUTOMOC TRUE)
include(GenerateExportHeader)
# The order is relevant here. B depends on A, and B headers depend on A
@@ -59,7 +59,7 @@ set_target_properties(libC PROPERTIES AUTOMOC TRUE)
generate_export_header(libC)
target_link_libraries(libC LINK_PUBLIC libB)
-target_link_libraries(foo codeeditorLib ${QT_LIBRARIES} libC)
+target_link_libraries(QtAutogen codeeditorLib ${QT_LIBRARIES} libC)
add_library(empty STATIC empty.cpp)
set_target_properties(empty PROPERTIES AUTOMOC TRUE)
diff --git a/Tests/QtAutogen/main.cpp b/Tests/QtAutogen/main.cpp
index bd80180..39597ba 100644
--- a/Tests/QtAutogen/main.cpp
+++ b/Tests/QtAutogen/main.cpp
@@ -56,10 +56,9 @@ int main(int argv, char **args)
CodeEditor editor;
editor.setWindowTitle(QObject::tr("Code Editor Example"));
- editor.show();
Window w;
- w.show();
+ w.setWindowTitle(QObject::tr("Window Example"));
Foo foo;
foo.doFoo();
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1e01d3054701eef0e94e76c4f1956a15fda5bbdb
commit 1e01d3054701eef0e94e76c4f1956a15fda5bbdb
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Oct 11 14:17:32 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:27:39 2013 +0200
Rename the QtAutomoc tests to QtAutogen.
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index f7b98da..602976e 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1017,32 +1017,32 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
find_package(Qt5Widgets QUIET NO_MODULE)
if(Qt5Widgets_FOUND)
- add_test(Qt5Automoc ${CMAKE_CTEST_COMMAND}
+ add_test(Qt5Autogen ${CMAKE_CTEST_COMMAND}
--build-and-test
- "${CMake_SOURCE_DIR}/Tests/QtAutomoc"
- "${CMake_BINARY_DIR}/Tests/Qt5Automoc"
+ "${CMake_SOURCE_DIR}/Tests/QtAutogen"
+ "${CMake_BINARY_DIR}/Tests/Qt5Autogen"
${build_generator_args}
- --build-project QtAutomoc
- --build-exe-dir "${CMake_BINARY_DIR}/Tests/Qt5Automoc"
+ --build-project QtAutogen
+ --build-exe-dir "${CMake_BINARY_DIR}/Tests/Qt5Autogen"
--force-new-ctest-process
--build-options -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE} -DQT_TEST_VERSION=5
--test-command ${CMAKE_CTEST_COMMAND} -V
)
- list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt5Automoc")
+ list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt5Autogen")
endif()
if(QT4_WORKS AND QT_QTGUI_FOUND)
- add_test(Qt4Automoc ${CMAKE_CTEST_COMMAND}
+ add_test(Qt4Autogen ${CMAKE_CTEST_COMMAND}
--build-and-test
- "${CMake_SOURCE_DIR}/Tests/QtAutomoc"
- "${CMake_BINARY_DIR}/Tests/Qt4Automoc"
+ "${CMake_SOURCE_DIR}/Tests/QtAutogen"
+ "${CMake_BINARY_DIR}/Tests/Qt4Autogen"
${build_generator_args}
- --build-project QtAutomoc
- --build-exe-dir "${CMake_BINARY_DIR}/Tests/Qt4Automoc"
+ --build-project QtAutogen
+ --build-exe-dir "${CMake_BINARY_DIR}/Tests/Qt4Autogen"
--force-new-ctest-process
--build-options -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE} -DQT_TEST_VERSION=4
--test-command ${CMAKE_CTEST_COMMAND} -V
)
- list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt4Automoc")
+ list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Qt4Autogen")
add_test(Qt4Targets ${CMAKE_CTEST_COMMAND}
--build-and-test
diff --git a/Tests/QtAutomoc/Adir/CMakeLists.txt b/Tests/QtAutogen/Adir/CMakeLists.txt
similarity index 100%
rename from Tests/QtAutomoc/Adir/CMakeLists.txt
rename to Tests/QtAutogen/Adir/CMakeLists.txt
diff --git a/Tests/QtAutomoc/Adir/libA.cpp b/Tests/QtAutogen/Adir/libA.cpp
similarity index 100%
rename from Tests/QtAutomoc/Adir/libA.cpp
rename to Tests/QtAutogen/Adir/libA.cpp
diff --git a/Tests/QtAutomoc/Adir/libA.h b/Tests/QtAutogen/Adir/libA.h
similarity index 100%
rename from Tests/QtAutomoc/Adir/libA.h
rename to Tests/QtAutogen/Adir/libA.h
diff --git a/Tests/QtAutomoc/Bdir/CMakeLists.txt b/Tests/QtAutogen/Bdir/CMakeLists.txt
similarity index 100%
rename from Tests/QtAutomoc/Bdir/CMakeLists.txt
rename to Tests/QtAutogen/Bdir/CMakeLists.txt
diff --git a/Tests/QtAutomoc/Bdir/libB.cpp b/Tests/QtAutogen/Bdir/libB.cpp
similarity index 100%
rename from Tests/QtAutomoc/Bdir/libB.cpp
rename to Tests/QtAutogen/Bdir/libB.cpp
diff --git a/Tests/QtAutomoc/Bdir/libB.h b/Tests/QtAutogen/Bdir/libB.h
similarity index 100%
rename from Tests/QtAutomoc/Bdir/libB.h
rename to Tests/QtAutogen/Bdir/libB.h
diff --git a/Tests/QtAutomoc/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt
similarity index 99%
rename from Tests/QtAutomoc/CMakeLists.txt
rename to Tests/QtAutogen/CMakeLists.txt
index 8ad693a..a7f553f 100644
--- a/Tests/QtAutomoc/CMakeLists.txt
+++ b/Tests/QtAutogen/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 2.8)
-project(QtAutomoc)
+project(QtAutogen)
if (QT_TEST_VERSION STREQUAL 4)
find_package(Qt4 REQUIRED)
diff --git a/Tests/QtAutomoc/abc.cpp b/Tests/QtAutogen/abc.cpp
similarity index 100%
rename from Tests/QtAutomoc/abc.cpp
rename to Tests/QtAutogen/abc.cpp
diff --git a/Tests/QtAutomoc/abc.h b/Tests/QtAutogen/abc.h
similarity index 100%
rename from Tests/QtAutomoc/abc.h
rename to Tests/QtAutogen/abc.h
diff --git a/Tests/QtAutomoc/abc_p.h b/Tests/QtAutogen/abc_p.h
similarity index 100%
rename from Tests/QtAutomoc/abc_p.h
rename to Tests/QtAutogen/abc_p.h
diff --git a/Tests/QtAutomoc/bar.cpp b/Tests/QtAutogen/bar.cpp
similarity index 100%
rename from Tests/QtAutomoc/bar.cpp
rename to Tests/QtAutogen/bar.cpp
diff --git a/Tests/QtAutomoc/blub.cpp b/Tests/QtAutogen/blub.cpp
similarity index 100%
rename from Tests/QtAutomoc/blub.cpp
rename to Tests/QtAutogen/blub.cpp
diff --git a/Tests/QtAutomoc/blub.h b/Tests/QtAutogen/blub.h
similarity index 100%
rename from Tests/QtAutomoc/blub.h
rename to Tests/QtAutogen/blub.h
diff --git a/Tests/QtAutomoc/calwidget.cpp b/Tests/QtAutogen/calwidget.cpp
similarity index 100%
rename from Tests/QtAutomoc/calwidget.cpp
rename to Tests/QtAutogen/calwidget.cpp
diff --git a/Tests/QtAutomoc/calwidget.h b/Tests/QtAutogen/calwidget.h
similarity index 100%
rename from Tests/QtAutomoc/calwidget.h
rename to Tests/QtAutogen/calwidget.h
diff --git a/Tests/QtAutomoc/codeeditor.cpp b/Tests/QtAutogen/codeeditor.cpp
similarity index 100%
rename from Tests/QtAutomoc/codeeditor.cpp
rename to Tests/QtAutogen/codeeditor.cpp
diff --git a/Tests/QtAutomoc/codeeditor.h b/Tests/QtAutogen/codeeditor.h
similarity index 100%
rename from Tests/QtAutomoc/codeeditor.h
rename to Tests/QtAutogen/codeeditor.h
diff --git a/Tests/QtAutomoc/defines_test/CMakeLists.txt b/Tests/QtAutogen/defines_test/CMakeLists.txt
similarity index 100%
rename from Tests/QtAutomoc/defines_test/CMakeLists.txt
rename to Tests/QtAutogen/defines_test/CMakeLists.txt
diff --git a/Tests/QtAutomoc/defines_test/defines_test.cpp b/Tests/QtAutogen/defines_test/defines_test.cpp
similarity index 100%
rename from Tests/QtAutomoc/defines_test/defines_test.cpp
rename to Tests/QtAutogen/defines_test/defines_test.cpp
diff --git a/Tests/QtAutomoc/empty.cpp b/Tests/QtAutogen/empty.cpp
similarity index 100%
rename from Tests/QtAutomoc/empty.cpp
rename to Tests/QtAutogen/empty.cpp
diff --git a/Tests/QtAutomoc/empty.h b/Tests/QtAutogen/empty.h
similarity index 100%
rename from Tests/QtAutomoc/empty.h
rename to Tests/QtAutogen/empty.h
diff --git a/Tests/QtAutomoc/foo.cpp b/Tests/QtAutogen/foo.cpp
similarity index 100%
rename from Tests/QtAutomoc/foo.cpp
rename to Tests/QtAutogen/foo.cpp
diff --git a/Tests/QtAutomoc/foo.h b/Tests/QtAutogen/foo.h
similarity index 100%
rename from Tests/QtAutomoc/foo.h
rename to Tests/QtAutogen/foo.h
diff --git a/Tests/QtAutomoc/gadget.cpp b/Tests/QtAutogen/gadget.cpp
similarity index 100%
rename from Tests/QtAutomoc/gadget.cpp
rename to Tests/QtAutogen/gadget.cpp
diff --git a/Tests/QtAutomoc/gadget.h b/Tests/QtAutogen/gadget.h
similarity index 100%
rename from Tests/QtAutomoc/gadget.h
rename to Tests/QtAutogen/gadget.h
diff --git a/Tests/QtAutomoc/libC.cpp b/Tests/QtAutogen/libC.cpp
similarity index 100%
rename from Tests/QtAutomoc/libC.cpp
rename to Tests/QtAutogen/libC.cpp
diff --git a/Tests/QtAutomoc/libC.h b/Tests/QtAutogen/libC.h
similarity index 100%
rename from Tests/QtAutomoc/libC.h
rename to Tests/QtAutogen/libC.h
diff --git a/Tests/QtAutomoc/main.cpp b/Tests/QtAutogen/main.cpp
similarity index 100%
rename from Tests/QtAutomoc/main.cpp
rename to Tests/QtAutogen/main.cpp
diff --git a/Tests/QtAutomoc/private_slot.cpp b/Tests/QtAutogen/private_slot.cpp
similarity index 100%
rename from Tests/QtAutomoc/private_slot.cpp
rename to Tests/QtAutogen/private_slot.cpp
diff --git a/Tests/QtAutomoc/private_slot.h b/Tests/QtAutogen/private_slot.h
similarity index 100%
rename from Tests/QtAutomoc/private_slot.h
rename to Tests/QtAutogen/private_slot.h
diff --git a/Tests/QtAutomoc/sub/bar.h b/Tests/QtAutogen/sub/bar.h
similarity index 100%
rename from Tests/QtAutomoc/sub/bar.h
rename to Tests/QtAutogen/sub/bar.h
diff --git a/Tests/QtAutomoc/xyz.cpp b/Tests/QtAutogen/xyz.cpp
similarity index 100%
rename from Tests/QtAutomoc/xyz.cpp
rename to Tests/QtAutogen/xyz.cpp
diff --git a/Tests/QtAutomoc/xyz.h b/Tests/QtAutogen/xyz.h
similarity index 100%
rename from Tests/QtAutomoc/xyz.h
rename to Tests/QtAutogen/xyz.h
diff --git a/Tests/QtAutomoc/yaf.cpp b/Tests/QtAutogen/yaf.cpp
similarity index 100%
rename from Tests/QtAutomoc/yaf.cpp
rename to Tests/QtAutogen/yaf.cpp
diff --git a/Tests/QtAutomoc/yaf.h b/Tests/QtAutogen/yaf.h
similarity index 100%
rename from Tests/QtAutomoc/yaf.h
rename to Tests/QtAutogen/yaf.h
diff --git a/Tests/QtAutomoc/yaf_p.h b/Tests/QtAutogen/yaf_p.h
similarity index 100%
rename from Tests/QtAutomoc/yaf_p.h
rename to Tests/QtAutogen/yaf_p.h
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=671f2a43656ed8e866325ba74d752e4ff2b1a88d
commit 671f2a43656ed8e866325ba74d752e4ff2b1a88d
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Oct 11 13:30:54 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:27:39 2013 +0200
Add extra checks for the AUTOMOC target property.
In an upcoming commit, this class will be used even if it is not set.
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index 325ac0f..e57d366 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -149,18 +149,21 @@ bool cmQtAutoGenerators::InitializeMocSourceFile(cmTarget* target)
return false;
}
- std::string automocTargetName = target->GetName();
- automocTargetName += "_automoc";
- std::string mocCppFile = makefile->GetCurrentOutputDirectory();
- mocCppFile += "/";
- mocCppFile += automocTargetName;
- mocCppFile += ".cpp";
- cmSourceFile* mocCppSource = makefile->GetOrCreateSource(mocCppFile.c_str(),
- true);
- makefile->AppendProperty("ADDITIONAL_MAKE_CLEAN_FILES",
- mocCppFile.c_str(), false);
-
- target->AddSourceFile(mocCppSource);
+ if (target->GetPropertyAsBool("AUTOMOC"))
+ {
+ std::string automocTargetName = target->GetName();
+ automocTargetName += "_automoc";
+ std::string mocCppFile = makefile->GetCurrentOutputDirectory();
+ mocCppFile += "/";
+ mocCppFile += automocTargetName;
+ mocCppFile += ".cpp";
+ cmSourceFile* mocCppSource = makefile->GetOrCreateSource(mocCppFile.c_str(),
+ true);
+ makefile->AppendProperty("ADDITIONAL_MAKE_CLEAN_FILES",
+ mocCppFile.c_str(), false);
+
+ target->AddSourceFile(mocCppSource);
+ }
return true;
}
@@ -313,8 +316,11 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
std::map<std::string, std::string> configIncludes;
std::map<std::string, std::string> configDefines;
- this->SetupAutoMocTarget(target, autogenTargetName,
- configIncludes, configDefines);
+ if (target->GetPropertyAsBool("AUTOMOC"))
+ {
+ this->SetupAutoMocTarget(target, autogenTargetName,
+ configIncludes, configDefines);
+ }
const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT");
std::string inputFile = cmakeRoot;
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=79a9cd4ded4ca47b50bc94da6fb481cf135006ff
commit 79a9cd4ded4ca47b50bc94da6fb481cf135006ff
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Oct 11 13:28:48 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:27:38 2013 +0200
Update output messages for generic use.
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index 0557f45..325ac0f 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -752,7 +752,7 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
const std::string &absFilename = *it;
if (this->Verbose)
{
- std::cout << "AUTOMOC: Checking " << absFilename << std::endl;
+ std::cout << "AUTOGEN: Checking " << absFilename << std::endl;
}
if (this->RelaxedMode)
{
@@ -853,7 +853,7 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
const std::string contentsString = this->ReadAll(absFilename);
if (contentsString.empty())
{
- std::cerr << "AUTOMOC: warning: " << absFilename << ": file is empty\n"
+ std::cerr << "AUTOGEN: warning: " << absFilename << ": file is empty\n"
<< std::endl;
return;
}
@@ -913,7 +913,7 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
}
else
{
- std::cerr << "AUTOMOC: error: " << absFilename << " The file "
+ std::cerr << "AUTOGEN: error: " << absFilename << " The file "
<< "includes the moc file \"" << currentMoc << "\", "
<< "but could not find header \"" << basename
<< '{' << this->Join(headerExtensions, ',') << "}\" ";
@@ -944,7 +944,7 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
fileToMoc = headerToMoc;
if ((requiresMoc==false) &&(basename==scannedFileBasename))
{
- std::cerr << "AUTOMOC: warning: " << absFilename << ": The file "
+ std::cerr << "AUTOGEN: warning: " << absFilename << ": The file "
"includes the moc file \"" << currentMoc <<
"\", but does not contain a " << macroName
<< " macro. Running moc on "
@@ -955,7 +955,7 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
}
else
{
- std::cerr << "AUTOMOC: warning: " << absFilename << ": The file "
+ std::cerr << "AUTOGEN: warning: " << absFilename << ": The file "
"includes the moc file \"" << currentMoc <<
"\" instead of \"moc_" << basename << ".cpp\". "
"Running moc on "
@@ -967,7 +967,7 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
}
else
{
- std::cerr <<"AUTOMOC: error: " << absFilename << ": The file "
+ std::cerr <<"AUTOGEN: error: " << absFilename << ": The file "
"includes the moc file \"" << currentMoc <<
"\", which seems to be the moc file from a different "
"source file. CMake also could not find a matching "
@@ -995,7 +995,7 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
if (mocUnderscoreIncluded == true)
{
// this is for KDE4 compatibility:
- std::cerr << "AUTOMOC: warning: " << absFilename << ": The file "
+ std::cerr << "AUTOGEN: warning: " << absFilename << ": The file "
<< "contains a " << macroName << " macro, but does not "
"include "
<< "\"" << scannedFileBasename << ".moc\", but instead "
@@ -1011,7 +1011,7 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
else
{
// otherwise always error out since it will not compile:
- std::cerr << "AUTOMOC: error: " << absFilename << ": The file "
+ std::cerr << "AUTOGEN: error: " << absFilename << ": The file "
<< "contains a " << macroName << " macro, but does not "
"include "
<< "\"" << scannedFileBasename << ".moc\" !\n"
@@ -1034,7 +1034,7 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename,
const std::string contentsString = this->ReadAll(absFilename);
if (contentsString.empty())
{
- std::cerr << "AUTOMOC: warning: " << absFilename << ": file is empty\n"
+ std::cerr << "AUTOGEN: warning: " << absFilename << ": file is empty\n"
<< std::endl;
return;
}
@@ -1081,7 +1081,7 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename,
}
else
{
- std::cerr << "AUTOMOC: error: " << absFilename << " The file "
+ std::cerr << "AUTOGEN: error: " << absFilename << " The file "
<< "includes the moc file \"" << currentMoc << "\", "
<< "but could not find header \"" << basename
<< '{' << this->Join(headerExtensions, ',') << "}\" ";
@@ -1102,7 +1102,7 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename,
{
if (basename != scannedFileBasename)
{
- std::cerr <<"AUTOMOC: error: " << absFilename << ": The file "
+ std::cerr <<"AUTOGEN: error: " << absFilename << ": The file "
"includes the moc file \"" << currentMoc <<
"\", which seems to be the moc file from a different "
"source file. This is not supported. "
@@ -1126,7 +1126,7 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename,
macroName)))
{
// otherwise always error out since it will not compile:
- std::cerr << "AUTOMOC: error: " << absFilename << ": The file "
+ std::cerr << "AUTOGEN: error: " << absFilename << ": The file "
<< "contains a " << macroName << " macro, but does not include "
<< "\"" << scannedFileBasename << ".moc\" !\n"
<< std::endl;
@@ -1186,7 +1186,7 @@ void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders,
{
if (this->Verbose)
{
- std::cout << "AUTOMOC: Checking " << headerName << std::endl;
+ std::cout << "AUTOGEN: Checking " << headerName << std::endl;
}
const std::string basename = cmsys::SystemTools::
@@ -1272,7 +1272,7 @@ bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile,
bool result = cmSystemTools::RunSingleCommand(command, &output, &retVal);
if (!result || retVal)
{
- std::cerr << "AUTOMOC: error: process for " << mocFilePath <<" failed:\n"
+ std::cerr << "AUTOGEN: error: process for " << mocFilePath <<" failed:\n"
<< output << std::endl;
this->RunMocFailed = true;
cmSystemTools::RemoveFile(mocFilePath.c_str());
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=48f82f72ca51b89f812a5ae8819556ec51c5113a
commit 48f82f72ca51b89f812a5ae8819556ec51c5113a
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Oct 11 13:28:08 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:27:38 2013 +0200
Rename RunAutomoc to RunAutogen.
It will soon be used to process ui and rcc files too.
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index dce86cd..0557f45 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -492,7 +492,7 @@ bool cmQtAutoGenerators::Run(const char* targetDirectory, const char *config)
if (this->QtMajorVersion == "4" || this->QtMajorVersion == "5")
{
- success = this->RunAutomoc(makefile);
+ success = this->RunAutogen(makefile);
}
this->WriteOldMocDefinitionsFile(targetDirectory);
@@ -718,7 +718,7 @@ void cmQtAutoGenerators::Init()
}
-bool cmQtAutoGenerators::RunAutomoc(cmMakefile* makefile)
+bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile)
{
if (!cmsys::SystemTools::FileExists(this->OutMocCppFilename.c_str())
|| (this->OldCompileSettingsStr != this->CurrentCompileSettingsStr))
diff --git a/Source/cmQtAutoGenerators.h b/Source/cmQtAutoGenerators.h
index ce70890..fe38b05 100644
--- a/Source/cmQtAutoGenerators.h
+++ b/Source/cmQtAutoGenerators.h
@@ -44,7 +44,7 @@ private:
std::string MakeCompileSettingsString(cmMakefile* makefile);
- bool RunAutomoc(cmMakefile* makefile);
+ bool RunAutogen(cmMakefile* makefile);
bool GenerateMoc(const std::string& sourceFile,
const std::string& mocFileName);
void ParseCppFile(const std::string& absFilename,
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b0fd78d1607b44420a32b3062fd1e5d6828bfa85
commit b0fd78d1607b44420a32b3062fd1e5d6828bfa85
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Oct 11 14:26:56 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:27:38 2013 +0200
Extract an SetupAutoMocTarget method.
This class will soon gain methods for autouic and autorcc.
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index bb9c48f..dce86cd 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -310,7 +310,61 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
target->AddUtility(autogenTargetName.c_str());
}
- // configure a file to get all information to automoc at buildtime:
+ std::map<std::string, std::string> configIncludes;
+ std::map<std::string, std::string> configDefines;
+
+ this->SetupAutoMocTarget(target, autogenTargetName,
+ configIncludes, configDefines);
+
+ const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT");
+ std::string inputFile = cmakeRoot;
+ inputFile += "/Modules/AutogenInfo.cmake.in";
+ std::string outputFile = targetDir;
+ outputFile += "/AutogenInfo.cmake";
+ makefile->ConfigureFile(inputFile.c_str(), outputFile.c_str(),
+ false, true, false);
+
+ if (!configDefines.empty() || !configIncludes.empty())
+ {
+ std::ofstream infoFile(outputFile.c_str(), std::ios::app);
+ if ( !infoFile )
+ {
+ std::string error = "Internal CMake error when trying to open file: ";
+ error += outputFile.c_str();
+ error += " for writing.";
+ cmSystemTools::Error(error.c_str());
+ return;
+ }
+ if (!configDefines.empty())
+ {
+ for (std::map<std::string, std::string>::iterator
+ it = configDefines.begin(), end = configDefines.end();
+ it != end; ++it)
+ {
+ infoFile << "set(AM_MOC_COMPILE_DEFINITIONS_" << it->first <<
+ " " << it->second << ")\n";
+ }
+ }
+ if (!configIncludes.empty())
+ {
+ for (std::map<std::string, std::string>::iterator
+ it = configIncludes.begin(), end = configIncludes.end();
+ it != end; ++it)
+ {
+ infoFile << "set(AM_MOC_INCLUDES_" << it->first <<
+ " " << it->second << ")\n";
+ }
+ }
+ }
+}
+
+void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget* target,
+ const std::string &autogenTargetName,
+ std::map<std::string, std::string> &configIncludes,
+ std::map<std::string, std::string> &configDefines)
+{
+ cmMakefile* makefile = target->GetMakefile();
+
std::string _moc_files;
std::string _moc_headers;
const char* sepFiles = "";
@@ -371,9 +425,6 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
makefile->AddDefinition("_moc_compile_defs",
cmLocalGenerator::EscapeForCMake(_moc_compile_defs.c_str()).c_str());
- std::map<std::string, std::string> configIncludes;
- std::map<std::string, std::string> configDefines;
-
for (std::vector<std::string>::const_iterator li = configs.begin();
li != configs.end(); ++li)
{
@@ -402,11 +453,10 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
}
}
- {
const char *qtMoc = makefile->GetSafeDefinition("QT_MOC_EXECUTABLE");
makefile->AddDefinition("_qt_moc_executable", qtMoc);
- }
+ const char *qtVersion = makefile->GetDefinition("_target_qt_version");
if (strcmp(qtVersion, "5") == 0)
{
cmTarget *qt5Moc = makefile->FindTargetToUse("Qt5::moc");
@@ -426,50 +476,8 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
"Qt 5 ", autogenTargetName.c_str());
}
}
-
- const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT");
- std::string inputFile = cmakeRoot;
- inputFile += "/Modules/AutogenInfo.cmake.in";
- std::string outputFile = targetDir;
- outputFile += "/AutogenInfo.cmake";
- makefile->ConfigureFile(inputFile.c_str(), outputFile.c_str(),
- false, true, false);
-
- if (!configDefines.empty() || !configIncludes.empty())
- {
- std::ofstream infoFile(outputFile.c_str(), std::ios::app);
- if ( !infoFile )
- {
- std::string error = "Internal CMake error when trying to open file: ";
- error += outputFile.c_str();
- error += " for writing.";
- cmSystemTools::Error(error.c_str());
- return;
- }
- if (!configDefines.empty())
- {
- for (std::map<std::string, std::string>::iterator
- it = configDefines.begin(), end = configDefines.end();
- it != end; ++it)
- {
- infoFile << "set(AM_MOC_COMPILE_DEFINITIONS_" << it->first <<
- " " << it->second << ")\n";
- }
- }
- if (!configIncludes.empty())
- {
- for (std::map<std::string, std::string>::iterator
- it = configIncludes.begin(), end = configIncludes.end();
- it != end; ++it)
- {
- infoFile << "set(AM_MOC_INCLUDES_" << it->first <<
- " " << it->second << ")\n";
- }
- }
- }
}
-
bool cmQtAutoGenerators::Run(const char* targetDirectory, const char *config)
{
bool success = true;
diff --git a/Source/cmQtAutoGenerators.h b/Source/cmQtAutoGenerators.h
index 68a2d27..ce70890 100644
--- a/Source/cmQtAutoGenerators.h
+++ b/Source/cmQtAutoGenerators.h
@@ -27,6 +27,11 @@ public:
void SetupAutoGenerateTarget(cmTarget* target);
private:
+ void SetupAutoMocTarget(cmTarget* target,
+ const std::string &autogenTargetName,
+ std::map<std::string, std::string> &configIncludes,
+ std::map<std::string, std::string> &configDefines);
+
cmGlobalGenerator* CreateGlobalGenerator(cmake* cm,
const char* targetDirectory);
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=98c741ee6540f12929c8d3513d010574bb2c4bf9
commit 98c741ee6540f12929c8d3513d010574bb2c4bf9
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Oct 11 14:26:55 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:27:38 2013 +0200
Rename the AutomocInfo.cmake file to be more generic.
diff --git a/Modules/AutomocInfo.cmake.in b/Modules/AutogenInfo.cmake.in
similarity index 100%
rename from Modules/AutomocInfo.cmake.in
rename to Modules/AutogenInfo.cmake.in
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index 8a563aa..bb9c48f 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -429,9 +429,9 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
const char* cmakeRoot = makefile->GetSafeDefinition("CMAKE_ROOT");
std::string inputFile = cmakeRoot;
- inputFile += "/Modules/AutomocInfo.cmake.in";
+ inputFile += "/Modules/AutogenInfo.cmake.in";
std::string outputFile = targetDir;
- outputFile += "/AutomocInfo.cmake";
+ outputFile += "/AutogenInfo.cmake";
makefile->ConfigureFile(inputFile.c_str(), outputFile.c_str(),
false, true, false);
@@ -519,7 +519,7 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(cmMakefile* makefile,
{
std::string filename(cmSystemTools::CollapseFullPath(targetDirectory));
cmSystemTools::ConvertToUnixSlashes(filename);
- filename += "/AutomocInfo.cmake";
+ filename += "/AutogenInfo.cmake";
if (!makefile->ReadListFile(0, filename.c_str()))
{
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fd3d68309bc3597e5de458cc1e176cf226853003
commit fd3d68309bc3597e5de458cc1e176cf226853003
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Oct 11 14:26:54 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:27:38 2013 +0200
Move some makefile definitions up away from moc-specific code.
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index 60bc68a..8a563aa 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -206,10 +206,31 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
cmMakefile* makefile = target->GetMakefile();
const char* targetName = target->GetName();
+ // forget the variables added here afterwards again:
+ cmMakefile::ScopePushPop varScope(makefile);
+ static_cast<void>(varScope);
+
+ const char *qtVersion = makefile->GetDefinition("Qt5Core_VERSION_MAJOR");
+ if (!qtVersion)
+ {
+ qtVersion = makefile->GetDefinition("QT_VERSION_MAJOR");
+ }
+ if (const char *targetQtVersion =
+ target->GetLinkInterfaceDependentStringProperty("QT_MAJOR_VERSION", 0))
+ {
+ qtVersion = targetQtVersion;
+ }
+ if (qtVersion)
+ {
+ makefile->AddDefinition("_target_qt_version", qtVersion);
+ }
// create a custom target for running generators at buildtime:
std::string autogenTargetName = targetName;
autogenTargetName += "_automoc";
+ makefile->AddDefinition("_moc_target_name",
+ cmLocalGenerator::EscapeForCMake(autogenTargetName.c_str()).c_str());
+
std::string targetDir = makefile->GetCurrentOutputDirectory();
targetDir += makefile->GetCMakeInstance()->GetCMakeFilesDirectory();
targetDir += "/";
@@ -329,13 +350,6 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
const char* tmp = target->GetProperty("AUTOMOC_MOC_OPTIONS");
std::string _moc_options = (tmp!=0 ? tmp : "");
-
- // forget the variables added here afterwards again:
- cmMakefile::ScopePushPop varScope(makefile);
- static_cast<void>(varScope);
-
- makefile->AddDefinition("_moc_target_name",
- cmLocalGenerator::EscapeForCMake(autogenTargetName.c_str()).c_str());
makefile->AddDefinition("_moc_options",
cmLocalGenerator::EscapeForCMake(_moc_options.c_str()).c_str());
makefile->AddDefinition("_moc_files",
@@ -388,21 +402,6 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
}
}
- const char *qtVersion = makefile->GetDefinition("Qt5Core_VERSION_MAJOR");
- if (!qtVersion)
- {
- qtVersion = makefile->GetDefinition("QT_VERSION_MAJOR");
- }
- if (const char *targetQtVersion =
- target->GetLinkInterfaceDependentStringProperty("QT_MAJOR_VERSION", 0))
- {
- qtVersion = targetQtVersion;
- }
- if (qtVersion)
- {
- makefile->AddDefinition("_target_qt_version", qtVersion);
- }
-
{
const char *qtMoc = makefile->GetSafeDefinition("QT_MOC_EXECUTABLE");
makefile->AddDefinition("_qt_moc_executable", qtMoc);
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a44b51e239b543851c4c60ecefce29e766e7ba84
commit a44b51e239b543851c4c60ecefce29e766e7ba84
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Oct 11 14:26:53 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:27:37 2013 +0200
Add the AUTOGEN_TARGETS_FOLDER and obsolete AUTOMOC_TARGETS_FOLDER.
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index 6cb9b38..60bc68a 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -269,11 +269,16 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
workingDirectory.c_str(), depends,
commandLines, false, autogenComment.c_str());
// Set target folder
- const char* automocFolder = makefile->GetCMakeInstance()->GetProperty(
+ const char* autogenFolder = makefile->GetCMakeInstance()->GetProperty(
"AUTOMOC_TARGETS_FOLDER");
- if (automocFolder && *automocFolder)
+ if (!autogenFolder)
{
- autogenTarget->SetProperty("FOLDER", automocFolder);
+ autogenFolder = makefile->GetCMakeInstance()->GetProperty(
+ "AUTOGEN_TARGETS_FOLDER");
+ }
+ if (autogenFolder && *autogenFolder)
+ {
+ autogenTarget->SetProperty("FOLDER", autogenFolder);
}
else
{
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 1c04e4e..5ec0284 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -245,7 +245,7 @@ void cmTarget::DefineProperties(cmake *cm)
"By setting the CMAKE_AUTOMOC_RELAXED_MODE variable to TRUE the rules "
"for searching the files which will be processed by moc can be relaxed. "
"See the documentation for this variable for more details.\n"
- "The global property AUTOMOC_TARGETS_FOLDER can be used to group the "
+ "The global property AUTOGEN_TARGETS_FOLDER can be used to group the "
"automoc targets together in an IDE, e.g. in MSVS.");
cm->DefineProperty
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index d2961c0..de5459c 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -2605,6 +2605,16 @@ void cmake::DefineProperties(cmake *cm)
("AUTOMOC_TARGETS_FOLDER", cmProperty::GLOBAL,
"Name of FOLDER for *_automoc targets that are added automatically by "
"CMake for targets for which AUTOMOC is enabled.",
+ "This property is obsolete. Use AUTOGEN_TARGETS_FOLDER instead."
+ "\n"
+ "If not set, CMake uses the FOLDER property of the parent target as a "
+ "default value for this property. See also the documentation for the "
+ "FOLDER target property and the AUTOMOC target property.");
+
+ cm->DefineProperty
+ ("AUTOGEN_TARGETS_FOLDER", cmProperty::GLOBAL,
+ "Name of FOLDER for *_autogen targets that are added automatically by "
+ "CMake for targets for which AUTOMOC is enabled.",
"If not set, CMake uses the FOLDER property of the parent target as a "
"default value for this property. See also the documentation for the "
"FOLDER target property and the AUTOMOC target property.");
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=18d84cf52d551004487080b73eae932ed007a141
commit 18d84cf52d551004487080b73eae932ed007a141
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Oct 11 14:26:51 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:27:30 2013 +0200
Rename some variables to reflect broader scope.
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index 3b55b02..6cb9b38 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -206,7 +206,7 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
cmMakefile* makefile = target->GetMakefile();
const char* targetName = target->GetName();
- // create a custom target for running automoc at buildtime:
+ // create a custom target for running generators at buildtime:
std::string autogenTargetName = targetName;
autogenTargetName += "_automoc";
@@ -230,8 +230,9 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
"", makefile->GetCurrentOutputDirectory());
std::vector<std::string> depends;
- std::string automocComment = "Automoc for target ";
- automocComment += targetName;
+ std::string tools = "moc";
+ std::string autogenComment = "Automatic " + tools + " for target ";
+ autogenComment += targetName;
#if defined(_WIN32) && !defined(__CYGWIN__)
bool usePRE_BUILD = false;
@@ -254,7 +255,7 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
// PRE_BUILD will work for an OBJECT_LIBRARY in this specific case.
std::vector<std::string> no_output;
cmCustomCommand cc(makefile, no_output, depends,
- commandLines, automocComment.c_str(),
+ commandLines, autogenComment.c_str(),
workingDirectory.c_str());
cc.SetEscapeOldStyle(false);
cc.SetEscapeAllowMakeVars(true);
@@ -263,21 +264,21 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
else
#endif
{
- cmTarget* automocTarget = makefile->AddUtilityCommand(
+ cmTarget* autogenTarget = makefile->AddUtilityCommand(
autogenTargetName.c_str(), true,
workingDirectory.c_str(), depends,
- commandLines, false, automocComment.c_str());
+ commandLines, false, autogenComment.c_str());
// Set target folder
const char* automocFolder = makefile->GetCMakeInstance()->GetProperty(
"AUTOMOC_TARGETS_FOLDER");
if (automocFolder && *automocFolder)
{
- automocTarget->SetProperty("FOLDER", automocFolder);
+ autogenTarget->SetProperty("FOLDER", automocFolder);
}
else
{
// inherit FOLDER property from target (#13688)
- copyTargetProperty(automocTarget, target, "FOLDER");
+ copyTargetProperty(autogenTarget, target, "FOLDER");
}
target->AddUtility(autogenTargetName.c_str());
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c3296847a2fdcddf592cdf4ae3216b40fb3e99c1
commit c3296847a2fdcddf592cdf4ae3216b40fb3e99c1
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Oct 2 13:50:31 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:25:47 2013 +0200
Rename method to reflect generic use.
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index 0e9535c..3b55b02 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -472,7 +472,7 @@ bool cmQtAutoGenerators::Run(const char* targetDirectory, const char *config)
cmGlobalGenerator* gg = this->CreateGlobalGenerator(&cm, targetDirectory);
cmMakefile* makefile = gg->GetCurrentLocalGenerator()->GetMakefile();
- this->ReadAutomocInfoFile(makefile, targetDirectory, config);
+ this->ReadAutogenInfoFile(makefile, targetDirectory, config);
this->ReadOldMocDefinitionsFile(makefile, targetDirectory);
this->Init();
@@ -508,7 +508,7 @@ cmGlobalGenerator* cmQtAutoGenerators::CreateGlobalGenerator(cmake* cm,
}
-bool cmQtAutoGenerators::ReadAutomocInfoFile(cmMakefile* makefile,
+bool cmQtAutoGenerators::ReadAutogenInfoFile(cmMakefile* makefile,
const char* targetDirectory,
const char *config)
{
diff --git a/Source/cmQtAutoGenerators.h b/Source/cmQtAutoGenerators.h
index ef38a5b..68a2d27 100644
--- a/Source/cmQtAutoGenerators.h
+++ b/Source/cmQtAutoGenerators.h
@@ -30,7 +30,7 @@ private:
cmGlobalGenerator* CreateGlobalGenerator(cmake* cm,
const char* targetDirectory);
- bool ReadAutomocInfoFile(cmMakefile* makefile,
+ bool ReadAutogenInfoFile(cmMakefile* makefile,
const char* targetDirectory,
const char *config);
bool ReadOldMocDefinitionsFile(cmMakefile* makefile,
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fda05c84090a6972a802240e7748dd8a5fa877f0
commit fda05c84090a6972a802240e7748dd8a5fa877f0
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Oct 2 13:50:07 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:25:46 2013 +0200
Rename local variable to reflect generic use.
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index 49a5e9b..0e9535c 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -207,13 +207,13 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
const char* targetName = target->GetName();
// create a custom target for running automoc at buildtime:
- std::string automocTargetName = targetName;
- automocTargetName += "_automoc";
+ std::string autogenTargetName = targetName;
+ autogenTargetName += "_automoc";
std::string targetDir = makefile->GetCurrentOutputDirectory();
targetDir += makefile->GetCMakeInstance()->GetCMakeFilesDirectory();
targetDir += "/";
- targetDir += automocTargetName;
+ targetDir += autogenTargetName;
targetDir += ".dir/";
cmCustomCommandLine currentLine;
@@ -264,7 +264,7 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
#endif
{
cmTarget* automocTarget = makefile->AddUtilityCommand(
- automocTargetName.c_str(), true,
+ autogenTargetName.c_str(), true,
workingDirectory.c_str(), depends,
commandLines, false, automocComment.c_str());
// Set target folder
@@ -280,7 +280,7 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
copyTargetProperty(automocTarget, target, "FOLDER");
}
- target->AddUtility(automocTargetName.c_str());
+ target->AddUtility(autogenTargetName.c_str());
}
// configure a file to get all information to automoc at buildtime:
@@ -329,7 +329,7 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
static_cast<void>(varScope);
makefile->AddDefinition("_moc_target_name",
- cmLocalGenerator::EscapeForCMake(automocTargetName.c_str()).c_str());
+ cmLocalGenerator::EscapeForCMake(autogenTargetName.c_str()).c_str());
makefile->AddDefinition("_moc_options",
cmLocalGenerator::EscapeForCMake(_moc_options.c_str()).c_str());
makefile->AddDefinition("_moc_files",
@@ -408,7 +408,7 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
if (!qt5Moc)
{
cmSystemTools::Error("Qt5::moc target not found ",
- automocTargetName.c_str());
+ autogenTargetName.c_str());
return;
}
makefile->AddDefinition("_qt_moc_executable", qt5Moc->GetLocation(0));
@@ -418,7 +418,7 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
if (strcmp(qtVersion, "4") != 0)
{
cmSystemTools::Error("The CMAKE_AUTOMOC feature supports only Qt 4 and "
- "Qt 5 ", automocTargetName.c_str());
+ "Qt 5 ", autogenTargetName.c_str());
}
}
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1e7e04fb9b73cdb49db04c3bb4aa0abeaff14fcd
commit 1e7e04fb9b73cdb49db04c3bb4aa0abeaff14fcd
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Oct 2 13:49:19 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:25:46 2013 +0200
Move variable set to where it is used.
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index 86d4cc8..49a5e9b 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -206,8 +206,6 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
cmMakefile* makefile = target->GetMakefile();
const char* targetName = target->GetName();
- bool relaxedMode = makefile->IsOn("CMAKE_AUTOMOC_RELAXED_MODE");
-
// create a custom target for running automoc at buildtime:
std::string automocTargetName = targetName;
automocTargetName += "_automoc";
@@ -338,6 +336,7 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
cmLocalGenerator::EscapeForCMake(_moc_files.c_str()).c_str());
makefile->AddDefinition("_moc_headers",
cmLocalGenerator::EscapeForCMake(_moc_headers.c_str()).c_str());
+ bool relaxedMode = makefile->IsOn("CMAKE_AUTOMOC_RELAXED_MODE");
makefile->AddDefinition("_moc_relaxed_mode", relaxedMode ? "TRUE" : "FALSE");
std::string _moc_incs;
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fa67e541d005903f7be909f945138f95b458a9ea
commit fa67e541d005903f7be909f945138f95b458a9ea
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Oct 2 13:40:49 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 20:24:32 2013 +0200
Rename the cmake_automoc command to cmake_autogen.
There is no need for a "cmake_automoc" backward compatibility command
because it is internal, undocumented, and only executed from a matching
version of cmake.
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index 8209341..86d4cc8 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -221,7 +221,7 @@ void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
cmCustomCommandLine currentLine;
currentLine.push_back(makefile->GetSafeDefinition("CMAKE_COMMAND"));
currentLine.push_back("-E");
- currentLine.push_back("cmake_automoc");
+ currentLine.push_back("cmake_autogen");
currentLine.push_back(targetDir);
currentLine.push_back("$<CONFIGURATION>");
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index 5de1dde..d8567bb 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -637,7 +637,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
{
return cmcmd::ExecuteEchoColor(args);
}
- else if (args[1] == "cmake_automoc")
+ else if (args[1] == "cmake_autogen")
{
cmQtAutoGenerators autogen;
const char *config = args[3].empty() ? 0 : args[3].c_str();
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5f9d341e72b78d3873b0d256e3a5f1f5be330777
commit 5f9d341e72b78d3873b0d256e3a5f1f5be330777
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Oct 2 13:39:50 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 13:03:29 2013 +0200
Rename the cmQtAutoGenerator instances to reflect coming features.
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 82aca75..067240c 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -1153,8 +1153,8 @@ bool cmGlobalGenerator::CheckTargets()
void cmGlobalGenerator::CreateQtAutoGeneratorsTargets()
{
#ifdef CMAKE_BUILD_WITH_CMAKE
- typedef std::vector<std::pair<cmQtAutoGenerators, cmTarget*> > Automocs;
- Automocs automocs;
+ typedef std::vector<std::pair<cmQtAutoGenerators, cmTarget*> > Autogens;
+ Autogens autogens;
for(unsigned int i=0; i < this->LocalGenerators.size(); ++i)
{
cmTargets& targets =
@@ -1171,16 +1171,16 @@ void cmGlobalGenerator::CreateQtAutoGeneratorsTargets()
{
if(target.GetPropertyAsBool("AUTOMOC") && !target.IsImported())
{
- cmQtAutoGenerators automoc;
- if(automoc.InitializeMocSourceFile(&target))
+ cmQtAutoGenerators autogen;
+ if(autogen.InitializeMocSourceFile(&target))
{
- automocs.push_back(std::make_pair(automoc, &target));
+ autogens.push_back(std::make_pair(autogen, &target));
}
}
}
}
}
- for (Automocs::iterator it = automocs.begin(); it != automocs.end();
+ for (Autogens::iterator it = autogens.begin(); it != autogens.end();
++it)
{
it->first.SetupAutoGenerateTarget(it->second);
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index ff97c55..5de1dde 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -639,10 +639,10 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
}
else if (args[1] == "cmake_automoc")
{
- cmQtAutoGenerators automoc;
+ cmQtAutoGenerators autogen;
const char *config = args[3].empty() ? 0 : args[3].c_str();
- bool automocSuccess = automoc.Run(args[2].c_str(), config);
- return automocSuccess ? 0 : 1;
+ bool autogenSuccess = autogen.Run(args[2].c_str(), config);
+ return autogenSuccess ? 0 : 1;
}
#endif
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8f8a13c5fc1e435c4781f017f559f65f3d89f38a
commit 8f8a13c5fc1e435c4781f017f559f65f3d89f38a
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Sep 24 20:07:45 2013 +0200
Commit: Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Oct 11 13:03:29 2013 +0200
Rename the cmQtAutomoc class to cmQtAutoGenerators.
It will be extended to process .ui and .qrc files too.
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
index 9b81e8b..84c13d4 100644
--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -259,8 +259,8 @@ set(SRCS
cmPropertyDefinitionMap.h
cmPropertyMap.cxx
cmPropertyMap.h
- cmQtAutomoc.cxx
- cmQtAutomoc.h
+ cmQtAutoGenerators.cxx
+ cmQtAutoGenerators.h
cmScriptGenerator.h
cmScriptGenerator.cxx
cmSourceFile.cxx
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index eacf85b..82aca75 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -18,7 +18,7 @@
#include "cmExternalMakefileProjectGenerator.h"
#include "cmake.h"
#include "cmMakefile.h"
-#include "cmQtAutomoc.h"
+#include "cmQtAutoGenerators.h"
#include "cmSourceFile.h"
#include "cmVersion.h"
#include "cmTargetExport.h"
@@ -1006,8 +1006,8 @@ void cmGlobalGenerator::Generate()
}
// Iterate through all targets and set up automoc for those which have
- // the AUTOMOC property set
- this->CreateAutomocTargets();
+ // the AUTOMOC, AUTOUIC or AUTORCC property set
+ this->CreateQtAutoGeneratorsTargets();
// For each existing cmLocalGenerator
unsigned int i;
@@ -1150,10 +1150,10 @@ bool cmGlobalGenerator::CheckTargets()
}
//----------------------------------------------------------------------------
-void cmGlobalGenerator::CreateAutomocTargets()
+void cmGlobalGenerator::CreateQtAutoGeneratorsTargets()
{
#ifdef CMAKE_BUILD_WITH_CMAKE
- typedef std::vector<std::pair<cmQtAutomoc, cmTarget*> > Automocs;
+ typedef std::vector<std::pair<cmQtAutoGenerators, cmTarget*> > Automocs;
Automocs automocs;
for(unsigned int i=0; i < this->LocalGenerators.size(); ++i)
{
@@ -1171,7 +1171,7 @@ void cmGlobalGenerator::CreateAutomocTargets()
{
if(target.GetPropertyAsBool("AUTOMOC") && !target.IsImported())
{
- cmQtAutomoc automoc;
+ cmQtAutoGenerators automoc;
if(automoc.InitializeMocSourceFile(&target))
{
automocs.push_back(std::make_pair(automoc, &target));
@@ -1183,7 +1183,7 @@ void cmGlobalGenerator::CreateAutomocTargets()
for (Automocs::iterator it = automocs.begin(); it != automocs.end();
++it)
{
- it->first.SetupAutomocTarget(it->second);
+ it->first.SetupAutoGenerateTarget(it->second);
}
#endif
}
diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h
index 70f6e32..4308e3a 100644
--- a/Source/cmGlobalGenerator.h
+++ b/Source/cmGlobalGenerator.h
@@ -311,7 +311,7 @@ protected:
virtual bool CheckALLOW_DUPLICATE_CUSTOM_TARGETS();
bool CheckTargets();
- void CreateAutomocTargets();
+ void CreateQtAutoGeneratorsTargets();
// Fill the ProjectMap, this must be called after LocalGenerators
diff --git a/Source/cmQtAutomoc.cxx b/Source/cmQtAutoGenerators.cxx
similarity index 96%
rename from Source/cmQtAutomoc.cxx
rename to Source/cmQtAutoGenerators.cxx
index 651e0ad..8209341 100644
--- a/Source/cmQtAutomoc.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -29,7 +29,7 @@
#include <unistd.h>
#endif
-#include "cmQtAutomoc.h"
+#include "cmQtAutoGenerators.h"
static bool requiresMocing(const std::string& text, std::string ¯oName)
@@ -113,7 +113,7 @@ static void copyTargetProperty(cmTarget* destinationTarget,
}
-cmQtAutomoc::cmQtAutomoc()
+cmQtAutoGenerators::cmQtAutoGenerators()
:Verbose(cmsys::SystemTools::GetEnv("VERBOSE") != 0)
,ColorOutput(true)
,RunMocFailed(false)
@@ -135,7 +135,7 @@ cmQtAutomoc::cmQtAutomoc()
}
}
-bool cmQtAutomoc::InitializeMocSourceFile(cmTarget* target)
+bool cmQtAutoGenerators::InitializeMocSourceFile(cmTarget* target)
{
cmMakefile* makefile = target->GetMakefile();
// don't do anything if there is no Qt4 or Qt5Core (which contains moc):
@@ -201,7 +201,7 @@ static void GetCompileDefinitionsAndDirectories(cmTarget *target,
}
}
-void cmQtAutomoc::SetupAutomocTarget(cmTarget* target)
+void cmQtAutoGenerators::SetupAutoGenerateTarget(cmTarget* target)
{
cmMakefile* makefile = target->GetMakefile();
const char* targetName = target->GetName();
@@ -466,7 +466,7 @@ void cmQtAutomoc::SetupAutomocTarget(cmTarget* target)
}
-bool cmQtAutomoc::Run(const char* targetDirectory, const char *config)
+bool cmQtAutoGenerators::Run(const char* targetDirectory, const char *config)
{
bool success = true;
cmake cm;
@@ -492,7 +492,7 @@ bool cmQtAutomoc::Run(const char* targetDirectory, const char *config)
}
-cmGlobalGenerator* cmQtAutomoc::CreateGlobalGenerator(cmake* cm,
+cmGlobalGenerator* cmQtAutoGenerators::CreateGlobalGenerator(cmake* cm,
const char* targetDirectory)
{
cmGlobalGenerator* gg = new cmGlobalGenerator();
@@ -509,7 +509,7 @@ cmGlobalGenerator* cmQtAutomoc::CreateGlobalGenerator(cmake* cm,
}
-bool cmQtAutomoc::ReadAutomocInfoFile(cmMakefile* makefile,
+bool cmQtAutoGenerators::ReadAutomocInfoFile(cmMakefile* makefile,
const char* targetDirectory,
const char *config)
{
@@ -569,7 +569,7 @@ bool cmQtAutomoc::ReadAutomocInfoFile(cmMakefile* makefile,
}
-std::string cmQtAutomoc::MakeCompileSettingsString(cmMakefile* makefile)
+std::string cmQtAutoGenerators::MakeCompileSettingsString(cmMakefile* makefile)
{
std::string s;
s += makefile->GetSafeDefinition("AM_MOC_COMPILE_DEFINITIONS");
@@ -586,7 +586,7 @@ std::string cmQtAutomoc::MakeCompileSettingsString(cmMakefile* makefile)
}
-bool cmQtAutomoc::ReadOldMocDefinitionsFile(cmMakefile* makefile,
+bool cmQtAutoGenerators::ReadOldMocDefinitionsFile(cmMakefile* makefile,
const char* targetDirectory)
{
std::string filename(cmSystemTools::CollapseFullPath(targetDirectory));
@@ -602,7 +602,7 @@ bool cmQtAutomoc::ReadOldMocDefinitionsFile(cmMakefile* makefile,
}
-void cmQtAutomoc::WriteOldMocDefinitionsFile(const char* targetDirectory)
+void cmQtAutoGenerators::WriteOldMocDefinitionsFile(const char* targetDirectory)
{
std::string filename(cmSystemTools::CollapseFullPath(targetDirectory));
cmSystemTools::ConvertToUnixSlashes(filename);
@@ -619,7 +619,7 @@ void cmQtAutomoc::WriteOldMocDefinitionsFile(const char* targetDirectory)
}
-void cmQtAutomoc::Init()
+void cmQtAutoGenerators::Init()
{
this->OutMocCppFilename = this->Builddir;
this->OutMocCppFilename += this->TargetName;
@@ -706,7 +706,7 @@ void cmQtAutomoc::Init()
}
-bool cmQtAutomoc::RunAutomoc(cmMakefile* makefile)
+bool cmQtAutoGenerators::RunAutomoc(cmMakefile* makefile)
{
if (!cmsys::SystemTools::FileExists(this->OutMocCppFilename.c_str())
|| (this->OldCompileSettingsStr != this->CurrentCompileSettingsStr))
@@ -830,7 +830,7 @@ bool cmQtAutomoc::RunAutomoc(cmMakefile* makefile)
}
-void cmQtAutomoc::ParseCppFile(const std::string& absFilename,
+void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename,
const std::vector<std::string>& headerExtensions,
std::map<std::string, std::string>& includedMocs)
{
@@ -1011,7 +1011,7 @@ void cmQtAutomoc::ParseCppFile(const std::string& absFilename,
}
-void cmQtAutomoc::StrictParseCppFile(const std::string& absFilename,
+void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename,
const std::vector<std::string>& headerExtensions,
std::map<std::string, std::string>& includedMocs)
{
@@ -1124,7 +1124,7 @@ void cmQtAutomoc::StrictParseCppFile(const std::string& absFilename,
}
-void cmQtAutomoc::SearchHeadersForCppFile(const std::string& absFilename,
+void cmQtAutoGenerators::SearchHeadersForCppFile(const std::string& absFilename,
const std::vector<std::string>& headerExtensions,
std::set<std::string>& absHeaders)
{
@@ -1160,7 +1160,7 @@ void cmQtAutomoc::SearchHeadersForCppFile(const std::string& absFilename,
}
-void cmQtAutomoc::ParseHeaders(const std::set<std::string>& absHeaders,
+void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders,
const std::map<std::string, std::string>& includedMocs,
std::map<std::string, std::string>& notIncludedMocs)
{
@@ -1194,7 +1194,7 @@ void cmQtAutomoc::ParseHeaders(const std::set<std::string>& absHeaders,
}
-bool cmQtAutomoc::GenerateMoc(const std::string& sourceFile,
+bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile,
const std::string& mocFileName)
{
const std::string mocFilePath = this->Builddir + mocFileName;
@@ -1271,7 +1271,7 @@ bool cmQtAutomoc::GenerateMoc(const std::string& sourceFile,
}
-std::string cmQtAutomoc::Join(const std::vector<std::string>& lst,
+std::string cmQtAutoGenerators::Join(const std::vector<std::string>& lst,
char separator)
{
if (lst.empty())
@@ -1291,13 +1291,13 @@ std::string cmQtAutomoc::Join(const std::vector<std::string>& lst,
}
-bool cmQtAutomoc::StartsWith(const std::string& str, const std::string& with)
+bool cmQtAutoGenerators::StartsWith(const std::string& str, const std::string& with)
{
return (str.substr(0, with.length()) == with);
}
-bool cmQtAutomoc::EndsWith(const std::string& str, const std::string& with)
+bool cmQtAutoGenerators::EndsWith(const std::string& str, const std::string& with)
{
if (with.length() > (str.length()))
{
@@ -1307,7 +1307,7 @@ bool cmQtAutomoc::EndsWith(const std::string& str, const std::string& with)
}
-std::string cmQtAutomoc::ReadAll(const std::string& filename)
+std::string cmQtAutoGenerators::ReadAll(const std::string& filename)
{
std::ifstream file(filename.c_str());
cmsys_ios::stringstream stream;
diff --git a/Source/cmQtAutomoc.h b/Source/cmQtAutoGenerators.h
similarity index 95%
rename from Source/cmQtAutomoc.h
rename to Source/cmQtAutoGenerators.h
index ebeeb0e..ef38a5b 100644
--- a/Source/cmQtAutomoc.h
+++ b/Source/cmQtAutoGenerators.h
@@ -11,20 +11,20 @@
See the License for more information.
============================================================================*/
-#ifndef cmQtAutomoc_h
-#define cmQtAutomoc_h
+#ifndef cmQtAutoGenerators_h
+#define cmQtAutoGenerators_h
class cmGlobalGenerator;
class cmMakefile;
-class cmQtAutomoc
+class cmQtAutoGenerators
{
public:
- cmQtAutomoc();
+ cmQtAutoGenerators();
bool Run(const char* targetDirectory, const char *config);
bool InitializeMocSourceFile(cmTarget* target);
- void SetupAutomocTarget(cmTarget* target);
+ void SetupAutoGenerateTarget(cmTarget* target);
private:
cmGlobalGenerator* CreateGlobalGenerator(cmake* cm,
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index 48d7d7b..ff97c55 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -13,7 +13,7 @@
#include "cmMakefile.h"
#include "cmLocalGenerator.h"
#include "cmGlobalGenerator.h"
-#include "cmQtAutomoc.h"
+#include "cmQtAutoGenerators.h"
#include "cmVersion.h"
#if defined(CMAKE_BUILD_WITH_CMAKE)
@@ -639,7 +639,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
}
else if (args[1] == "cmake_automoc")
{
- cmQtAutomoc automoc;
+ cmQtAutoGenerators automoc;
const char *config = args[3].empty() ? 0 : args[3].c_str();
bool automocSuccess = automoc.Run(args[2].c_str(), config);
return automocSuccess ? 0 : 1;
-----------------------------------------------------------------------
Summary of changes:
Modules/AutogenInfo.cmake.in | 23 +
Modules/AutomocInfo.cmake.in | 14 -
Source/CMakeLists.txt | 4 +-
Source/cmDocumentVariables.cxx | 18 +
Source/cmGlobalGenerator.cxx | 27 +-
Source/cmGlobalGenerator.h | 2 +-
Source/cmMakefile.cxx | 10 +
Source/cmMakefile.h | 5 +
Source/cmQtAutoGenerators.cxx | 1850 ++++++++++++++++++++
Source/cmQtAutoGenerators.h | 124 ++
Source/cmQtAutomoc.cxx | 1317 --------------
Source/cmQtAutomoc.h | 96 -
Source/cmSourceFile.cxx | 31 +
Source/cmTarget.cxx | 39 +-
Source/cmake.cxx | 10 +
Source/cmcmd.cxx | 10 +-
Tests/CMakeLists.txt | 28 +-
Tests/{QtAutomoc => QtAutogen}/Adir/CMakeLists.txt | 0
Tests/{QtAutomoc => QtAutogen}/Adir/libA.cpp | 0
Tests/{QtAutomoc => QtAutogen}/Adir/libA.h | 0
Tests/{QtAutomoc => QtAutogen}/Bdir/CMakeLists.txt | 0
Tests/{QtAutomoc => QtAutogen}/Bdir/libB.cpp | 0
Tests/{QtAutomoc => QtAutogen}/Bdir/libB.h | 0
Tests/QtAutogen/CMakeLists.txt | 73 +
Tests/{QtAutomoc => QtAutogen}/abc.cpp | 0
Tests/{QtAutomoc => QtAutogen}/abc.h | 0
Tests/{QtAutomoc => QtAutogen}/abc_p.h | 0
Tests/{QtAutomoc => QtAutogen}/bar.cpp | 0
Tests/{QtAutomoc => QtAutogen}/blub.cpp | 0
Tests/{QtAutomoc => QtAutogen}/blub.h | 0
Tests/QtAutogen/calwidget.cpp | 434 +++++
Tests/QtAutogen/calwidget.h | 128 ++
Tests/QtAutogen/calwidget.ui | 32 +
Tests/{QtAutomoc => QtAutogen}/codeeditor.cpp | 0
Tests/{QtAutomoc => QtAutogen}/codeeditor.h | 0
.../defines_test/CMakeLists.txt | 0
.../defines_test/defines_test.cpp | 0
Tests/{QtAutomoc => QtAutogen}/empty.cpp | 0
Tests/{QtAutomoc => QtAutogen}/empty.h | 0
Tests/{QtAutomoc => QtAutogen}/foo.cpp | 0
Tests/{QtAutomoc => QtAutogen}/foo.h | 0
Tests/{QtAutomoc => QtAutogen}/gadget.cpp | 0
Tests/{QtAutomoc => QtAutogen}/gadget.h | 0
Tests/{QtAutomoc => QtAutogen}/libC.cpp | 0
Tests/{QtAutomoc => QtAutogen}/libC.h | 0
Tests/QtAutogen/main.cpp | 91 +
Tests/{QtAutomoc => QtAutogen}/private_slot.cpp | 0
Tests/{QtAutomoc => QtAutogen}/private_slot.h | 0
Tests/QtAutogen/resourcetester.cpp | 21 +
Tests/QtAutogen/resourcetester.h | 17 +
Tests/{QtAutomoc => QtAutogen}/sub/bar.h | 0
Tests/QtAutogen/test.qrc | 5 +
Tests/{QtAutomoc => QtAutogen}/xyz.cpp | 0
Tests/{QtAutomoc => QtAutogen}/xyz.h | 0
Tests/{QtAutomoc => QtAutogen}/yaf.cpp | 0
Tests/{QtAutomoc => QtAutogen}/yaf.h | 0
Tests/{QtAutomoc => QtAutogen}/yaf_p.h | 0
Tests/QtAutomoc/CMakeLists.txt | 68 -
Tests/QtAutomoc/calwidget.cpp | 431 -----
Tests/QtAutomoc/calwidget.h | 121 --
Tests/QtAutomoc/main.cpp | 86 -
61 files changed, 2947 insertions(+), 2168 deletions(-)
create mode 100644 Modules/AutogenInfo.cmake.in
delete mode 100644 Modules/AutomocInfo.cmake.in
create mode 100644 Source/cmQtAutoGenerators.cxx
create mode 100644 Source/cmQtAutoGenerators.h
delete mode 100644 Source/cmQtAutomoc.cxx
delete mode 100644 Source/cmQtAutomoc.h
rename Tests/{QtAutomoc => QtAutogen}/Adir/CMakeLists.txt (100%)
rename Tests/{QtAutomoc => QtAutogen}/Adir/libA.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/Adir/libA.h (100%)
rename Tests/{QtAutomoc => QtAutogen}/Bdir/CMakeLists.txt (100%)
rename Tests/{QtAutomoc => QtAutogen}/Bdir/libB.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/Bdir/libB.h (100%)
create mode 100644 Tests/QtAutogen/CMakeLists.txt
rename Tests/{QtAutomoc => QtAutogen}/abc.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/abc.h (100%)
rename Tests/{QtAutomoc => QtAutogen}/abc_p.h (100%)
rename Tests/{QtAutomoc => QtAutogen}/bar.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/blub.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/blub.h (100%)
create mode 100644 Tests/QtAutogen/calwidget.cpp
create mode 100644 Tests/QtAutogen/calwidget.h
create mode 100644 Tests/QtAutogen/calwidget.ui
rename Tests/{QtAutomoc => QtAutogen}/codeeditor.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/codeeditor.h (100%)
rename Tests/{QtAutomoc => QtAutogen}/defines_test/CMakeLists.txt (100%)
rename Tests/{QtAutomoc => QtAutogen}/defines_test/defines_test.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/empty.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/empty.h (100%)
rename Tests/{QtAutomoc => QtAutogen}/foo.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/foo.h (100%)
rename Tests/{QtAutomoc => QtAutogen}/gadget.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/gadget.h (100%)
rename Tests/{QtAutomoc => QtAutogen}/libC.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/libC.h (100%)
create mode 100644 Tests/QtAutogen/main.cpp
rename Tests/{QtAutomoc => QtAutogen}/private_slot.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/private_slot.h (100%)
create mode 100644 Tests/QtAutogen/resourcetester.cpp
create mode 100644 Tests/QtAutogen/resourcetester.h
rename Tests/{QtAutomoc => QtAutogen}/sub/bar.h (100%)
create mode 100644 Tests/QtAutogen/test.qrc
rename Tests/{QtAutomoc => QtAutogen}/xyz.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/xyz.h (100%)
rename Tests/{QtAutomoc => QtAutogen}/yaf.cpp (100%)
rename Tests/{QtAutomoc => QtAutogen}/yaf.h (100%)
rename Tests/{QtAutomoc => QtAutogen}/yaf_p.h (100%)
delete mode 100644 Tests/QtAutomoc/CMakeLists.txt
delete mode 100644 Tests/QtAutomoc/calwidget.cpp
delete mode 100644 Tests/QtAutomoc/calwidget.h
delete mode 100644 Tests/QtAutomoc/main.cpp
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list