Start implementing skeleton for automoc in cmake

Alex
This commit is contained in:
Alex Neundorf 2011-08-07 17:16:00 +02:00
parent a65011baf1
commit d1c0a5fce6
3 changed files with 100 additions and 1 deletions

View File

@ -1,3 +1,8 @@
#include "cmGlobalGenerator.h"
#include "cmLocalGenerator.h"
#include "cmMakefile.h"
#include "cmSystemTools.h"
#include "cmQtAutomoc.h"
cmQtAutomoc::cmQtAutomoc()
@ -6,5 +11,80 @@ cmQtAutomoc::cmQtAutomoc()
bool cmQtAutomoc::Run(const char* targetDirectory)
{
cmake cm;
cmGlobalGenerator* gg = this->CreateGlobalGenerator(&cm, targetDirectory);
cmMakefile* makefile = gg->GetCurrentLocalGenerator()->GetMakefile();
this->ReadAutomocInfoFile(makefile, targetDirectory);
this->ReadOldMocDefinitionsFile(makefile, targetDirectory);
delete gg;
gg = NULL;
makefile = NULL;
if (this->QtMajorVersion == "4")
{
this->RunAutomocQt4();
}
this->WriteOldMocDefinitionsFile(targetDirectory);
}
cmGlobalGenerator* cmQtAutomoc::CreateGlobalGenerator(cmake* cm,
const char* targetDirectory)
{
cmGlobalGenerator* gg = new cmGlobalGenerator();
gg->SetCMakeInstance(cm);
cmLocalGenerator* lg = gg->CreateLocalGenerator();
lg->GetMakefile()->SetHomeOutputDirectory(targetDirectory);
lg->GetMakefile()->SetStartOutputDirectory(targetDirectory);
lg->GetMakefile()->SetHomeDirectory(targetDirectory);
lg->GetMakefile()->SetStartDirectory(targetDirectory);
gg->SetCurrentLocalGenerator(lg);
return gg;
}
bool cmQtAutomoc::ReadAutomocInfoFile(cmMakefile* makefile,
const char* targetDirectory)
{
std::string filename(cmSystemTools::CollapseFullPath(targetDirectory));
cmSystemTools::ConvertToUnixSlashes(filename);
filename += "/AutomocInfo.cmake";
if (!makefile->ReadListFile(0, filename.c_str()))
{
cmSystemTools::Error("Error processing file:", filename.c_str());
}
return true;
}
bool cmQtAutomoc::ReadOldMocDefinitionsFile(cmMakefile* makefile,
const char* targetDirectory)
{
std::string filename(cmSystemTools::CollapseFullPath(targetDirectory));
cmSystemTools::ConvertToUnixSlashes(filename);
filename += "/AutomocOldMocDefinitions.cmake";
if (!makefile->ReadListFile(0, filename.c_str()))
{
cmSystemTools::Error("Error processing file:", filename.c_str());
}
return true;
}
bool cmQtAutomoc::RunAutomocQt4()
{
return true;
}
void cmQtAutomoc::WriteOldMocDefinitionsFile(const char* targetDirectory)
{
}

View File

@ -1,11 +1,29 @@
#ifndef cmQtAutomoc_h
#define cmQtAutomoc_h
class cmGlobalGenerator;
class cmMakefile;
class cmQtAutomoc
{
public:
cmQtAutomoc();
bool Run(const char* targetDirectory);
private:
cmGlobalGenerator* CreateGlobalGenerator(cmake* cm,
const char* targetDirectory);
bool ReadAutomocInfoFile(cmMakefile* makefile,
const char* targetDirectory);
bool ReadOldMocDefinitionsFile(cmMakefile* makefile,
const char* targetDirectory);
void WriteOldMocDefinitionsFile(const char* targetDirectory);
bool RunAutomocQt4();
std::string QtMajorVersion;
};
#endif

View File

@ -1578,7 +1578,8 @@ int cmake::ExecuteCMakeCommand(std::vector<std::string>& args)
else if (args[1] == "cmake_automoc")
{
cmQtAutomoc automoc;
automoc.Run("target directory");
automoc.Run(args[2].c_str());
return 0;
}
// Tar files