diff --git a/Source/cmQtAutomoc.cxx b/Source/cmQtAutomoc.cxx index cc421751e..4818f1bd5 100644 --- a/Source/cmQtAutomoc.cxx +++ b/Source/cmQtAutomoc.cxx @@ -44,14 +44,14 @@ static bool containsQ_OBJECT(const std::string& text) static std::string findMatchingHeader(const std::string& absPath, const std::string& mocSubDir, const std::string& basename, - const std::list& headerExtensions) + const std::vector& headerExtensions) { std::string header; - for(std::list::const_iterator ext = headerExtensions.begin(); + for(std::vector::const_iterator ext = headerExtensions.begin(); ext != headerExtensions.end(); ++ext) { - std::string sourceFilePath = absPath + basename + (*ext); + std::string sourceFilePath = absPath + basename + "." + (*ext); if (cmsys::SystemTools::FileExists(sourceFilePath.c_str())) { header = sourceFilePath; @@ -59,7 +59,7 @@ static std::string findMatchingHeader(const std::string& absPath, } if (!mocSubDir.empty()) { - sourceFilePath = mocSubDir + basename + (*ext); + sourceFilePath = mocSubDir + basename + "." + (*ext); if (cmsys::SystemTools::FileExists(sourceFilePath.c_str())) { header = sourceFilePath; @@ -296,7 +296,7 @@ bool cmQtAutomoc::Run(const char* targetDirectory) if (this->QtMajorVersion == "4" || this->QtMajorVersion == "5") { - success = this->RunAutomoc(); + success = this->RunAutomoc(makefile); } this->WriteOldMocDefinitionsFile(targetDirectory); @@ -504,7 +504,7 @@ void cmQtAutomoc::Init() } -bool cmQtAutomoc::RunAutomoc() +bool cmQtAutomoc::RunAutomoc(cmMakefile* makefile) { if (!cmsys::SystemTools::FileExists(this->OutMocCppFilename.c_str()) || (this->OldCompileSettingsStr != this->CurrentCompileSettingsStr)) @@ -528,22 +528,8 @@ bool cmQtAutomoc::RunAutomoc() std::vector sourceFiles; cmSystemTools::ExpandListArgument(this->Sources, sourceFiles); - std::list headerExtensions; - headerExtensions.push_back(".h"); - headerExtensions.push_back(".hpp"); - headerExtensions.push_back(".hxx"); -#if defined(_WIN32) - // not case sensitive, don't add ".H" -#elif defined(__APPLE__) - // detect case-sensitive filesystem - long caseSensitive = pathconf(this->Srcdir.c_str(), _PC_CASE_SENSITIVE); - if (caseSensitive == 1) - { - headerExtensions.push_back(".H"); - } -#else - headerExtensions.push_back(".H"); -#endif + const std::vector& headerExtensions = + makefile->GetHeaderExtensions(); for (std::vector::const_iterator it = sourceFiles.begin(); it != sourceFiles.end(); @@ -643,7 +629,7 @@ bool cmQtAutomoc::RunAutomoc() void cmQtAutomoc::ParseCppFile(const std::string& absFilename, - const std::list& headerExtensions, + const std::vector& headerExtensions, std::map& includedMocs) { cmsys::RegularExpression mocIncludeRegExp( @@ -821,7 +807,7 @@ void cmQtAutomoc::ParseCppFile(const std::string& absFilename, void cmQtAutomoc::StrictParseCppFile(const std::string& absFilename, - const std::list& headerExtensions, + const std::vector& headerExtensions, std::map& includedMocs) { cmsys::RegularExpression mocIncludeRegExp( @@ -932,8 +918,8 @@ void cmQtAutomoc::StrictParseCppFile(const std::string& absFilename, void cmQtAutomoc::SearchHeadersForCppFile(const std::string& absFilename, - const std::list& headerExtensions, - std::set& absHeaders) + const std::vector& headerExtensions, + std::set& absHeaders) { // search for header files and private header files we may need to moc: const std::string basename = @@ -941,22 +927,22 @@ void cmQtAutomoc::SearchHeadersForCppFile(const std::string& absFilename, const std::string absPath = cmsys::SystemTools::GetFilenamePath( cmsys::SystemTools::GetRealPath(absFilename.c_str())) + '/'; - for(std::list::const_iterator ext = headerExtensions.begin(); + for(std::vector::const_iterator ext = headerExtensions.begin(); ext != headerExtensions.end(); ++ext) { - const std::string headerName = absPath + basename + (*ext); + const std::string headerName = absPath + basename + "." + (*ext); if (cmsys::SystemTools::FileExists(headerName.c_str())) { absHeaders.insert(headerName); break; } } - for(std::list::const_iterator ext = headerExtensions.begin(); + for(std::vector::const_iterator ext = headerExtensions.begin(); ext != headerExtensions.end(); ++ext) { - const std::string privateHeaderName = absPath+basename+"_p"+(*ext); + const std::string privateHeaderName = absPath+basename+"_p."+(*ext); if (cmsys::SystemTools::FileExists(privateHeaderName.c_str())) { absHeaders.insert(privateHeaderName); @@ -1077,7 +1063,8 @@ bool cmQtAutomoc::GenerateMoc(const std::string& sourceFile, } -std::string cmQtAutomoc::Join(const std::list& lst,char separator) +std::string cmQtAutomoc::Join(const std::vector& lst, + char separator) { if (lst.empty()) { @@ -1085,11 +1072,11 @@ std::string cmQtAutomoc::Join(const std::list& lst,char separator) } std::string result; - for (std::list::const_iterator it = lst.begin(); + for (std::vector::const_iterator it = lst.begin(); it != lst.end(); ++it) { - result += (*it) + separator; + result += "." + (*it) + separator; } result.erase(result.end() - 1); return result; diff --git a/Source/cmQtAutomoc.h b/Source/cmQtAutomoc.h index a73747781..69da80e4f 100644 --- a/Source/cmQtAutomoc.h +++ b/Source/cmQtAutomoc.h @@ -37,18 +37,18 @@ private: std::string MakeCompileSettingsString(cmMakefile* makefile); - bool RunAutomoc(); + bool RunAutomoc(cmMakefile* makefile); bool GenerateMoc(const std::string& sourceFile, const std::string& mocFileName); void ParseCppFile(const std::string& absFilename, - const std::list& headerExtensions, + const std::vector& headerExtensions, std::map& includedMocs); void StrictParseCppFile(const std::string& absFilename, - const std::list& headerExtensions, + const std::vector& headerExtensions, std::map& includedMocs); void SearchHeadersForCppFile(const std::string& absFilename, - const std::list& headerExtensions, - std::set& absHeaders); + const std::vector& headerExtensions, + std::set& absHeaders); void ParseHeaders(const std::set& absHeaders, const std::map& includedMocs, @@ -56,7 +56,7 @@ private: void Init(); - std::string Join(const std::list& lst, char separator); + std::string Join(const std::vector& lst, char separator); bool EndsWith(const std::string& str, const std::string& with); bool StartsWith(const std::string& str, const std::string& with); std::string ReadAll(const std::string& filename);