Ninja: Eclipse and KDevelop fixes for ninja

Thx to Claus Klein
This commit is contained in:
Peter Kuemmel 2012-06-15 12:14:13 +02:00
parent 518c06585b
commit 2fb07fc44c
5 changed files with 26 additions and 4 deletions

View File

@ -33,6 +33,9 @@ cmExtraEclipseCDT4Generator
this->SupportedGlobalGenerators.push_back("NMake Makefiles"); this->SupportedGlobalGenerators.push_back("NMake Makefiles");
this->SupportedGlobalGenerators.push_back("MinGW Makefiles"); this->SupportedGlobalGenerators.push_back("MinGW Makefiles");
// this->SupportedGlobalGenerators.push_back("MSYS Makefiles"); // this->SupportedGlobalGenerators.push_back("MSYS Makefiles");
#endif
#ifdef CMAKE_USE_NINJA
this->SupportedGlobalGenerators.push_back("Ninja");
#endif #endif
this->SupportedGlobalGenerators.push_back("Unix Makefiles"); this->SupportedGlobalGenerators.push_back("Unix Makefiles");
@ -1067,9 +1070,8 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
} }
//insert rules for compiling, preprocessing and assembling individual files //insert rules for compiling, preprocessing and assembling individual files
cmLocalUnixMakefileGenerator3* lumg=(cmLocalUnixMakefileGenerator3*)*it;
std::vector<std::string> objectFileTargets; std::vector<std::string> objectFileTargets;
lumg->GetIndividualFileTargets(objectFileTargets); (*it)->GetIndividualFileTargets(objectFileTargets);
for(std::vector<std::string>::const_iterator fit=objectFileTargets.begin(); for(std::vector<std::string>::const_iterator fit=objectFileTargets.begin();
fit != objectFileTargets.end(); fit != objectFileTargets.end();
++fit) ++fit)

View File

@ -44,6 +44,9 @@ cmGlobalKdevelopGenerator::cmGlobalKdevelopGenerator()
:cmExternalMakefileProjectGenerator() :cmExternalMakefileProjectGenerator()
{ {
this->SupportedGlobalGenerators.push_back("Unix Makefiles"); this->SupportedGlobalGenerators.push_back("Unix Makefiles");
#ifdef CMAKE_USE_NINJA
this->SupportedGlobalGenerators.push_back("Ninja");
#endif
} }
void cmGlobalKdevelopGenerator::Generate() void cmGlobalKdevelopGenerator::Generate()

View File

@ -928,11 +928,22 @@ void cmGlobalNinjaGenerator::WriteTargetRebuildManifest(std::ostream& os)
cmNinjaDeps()); cmNinjaDeps());
} }
std::string cmGlobalNinjaGenerator::ninjaCmd() const
{
cmLocalGenerator* lgen = this->LocalGenerators[0];
if (lgen) {
return lgen->ConvertToOutputFormat(
lgen->GetMakefile()->GetRequiredDefinition("CMAKE_MAKE_PROGRAM"),
cmLocalGenerator::SHELL);
}
return "ninja";
}
void cmGlobalNinjaGenerator::WriteTargetClean(std::ostream& os) void cmGlobalNinjaGenerator::WriteTargetClean(std::ostream& os)
{ {
WriteRule(*this->RulesFileStream, WriteRule(*this->RulesFileStream,
"CLEAN", "CLEAN",
"ninja -t clean", (ninjaCmd() + " -t clean").c_str(),
"Cleaning all built files...", "Cleaning all built files...",
"Rule for cleaning all built files.", "Rule for cleaning all built files.",
/*depfile=*/ "", /*depfile=*/ "",
@ -953,7 +964,7 @@ void cmGlobalNinjaGenerator::WriteTargetHelp(std::ostream& os)
{ {
WriteRule(*this->RulesFileStream, WriteRule(*this->RulesFileStream,
"HELP", "HELP",
"ninja -t targets", (ninjaCmd() + " -t tagets").c_str(),
"All primary targets available:", "All primary targets available:",
"Rule for printing all primary targets available.", "Rule for printing all primary targets available.",
/*depfile=*/ "", /*depfile=*/ "",

View File

@ -317,6 +317,8 @@ private:
ASD.insert(deps.begin(), deps.end()); ASD.insert(deps.begin(), deps.end());
} }
std::string cmGlobalNinjaGenerator::ninjaCmd() const;
private: private:
/// The file containing the build statement. (the relation ship of the /// The file containing the build statement. (the relation ship of the
/// compilation DAG). /// compilation DAG).

View File

@ -204,6 +204,10 @@ public:
/** Compute the language used to compile the given source file. */ /** Compute the language used to compile the given source file. */
const char* GetSourceFileLanguage(const cmSourceFile& source); const char* GetSourceFileLanguage(const cmSourceFile& source);
// Fill the vector with the target names for the object files,
// preprocessed files and assembly files.
virtual void GetIndividualFileTargets(std::vector<std::string>& targets) {}
// Create a struct to hold the varibles passed into // Create a struct to hold the varibles passed into
// ExpandRuleVariables // ExpandRuleVariables
struct RuleVariables struct RuleVariables