diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index ae0fa87fc..50a6ea9c4 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -35,6 +35,23 @@ const char* cmTarget::TargetTypeNames[] = { "UNKNOWN_LIBRARY" }; +//---------------------------------------------------------------------------- +struct cmTarget::OutputInfo +{ + std::string OutDir; + std::string ImpDir; +}; + +//---------------------------------------------------------------------------- +struct cmTarget::ImportInfo +{ + bool NoSOName; + std::string Location; + std::string SOName; + std::string ImportLibrary; + cmTarget::LinkInterface LinkInterface; +}; + //---------------------------------------------------------------------------- class cmTargetInternals { @@ -58,6 +75,12 @@ public: }; typedef std::map LinkInterfaceMapType; LinkInterfaceMapType LinkInterfaceMap; + + typedef std::map OutputInfoMapType; + OutputInfoMapType OutputInfoMap; + + typedef std::map ImportInfoMapType; + ImportInfoMapType ImportInfoMap; }; //---------------------------------------------------------------------------- @@ -1855,7 +1878,7 @@ void cmTarget::SetProperty(const char* prop, const char* value) // information. if(this->IsImported() && strncmp(prop, "IMPORTED", 8) == 0) { - this->ImportInfoMap.clear(); + this->Internal->ImportInfoMap.clear(); } } @@ -1872,7 +1895,7 @@ void cmTarget::AppendProperty(const char* prop, const char* value) // information. if(this->IsImported() && strncmp(prop, "IMPORTED", 8) == 0) { - this->ImportInfoMap.clear(); + this->Internal->ImportInfoMap.clear(); } } @@ -1974,15 +1997,16 @@ cmTarget::OutputInfo const* cmTarget::GetOutputInfo(const char* config) { config_upper = cmSystemTools::UpperCase(config); } + typedef cmTargetInternals::OutputInfoMapType OutputInfoMapType; OutputInfoMapType::const_iterator i = - this->OutputInfoMap.find(config_upper); - if(i == this->OutputInfoMap.end()) + this->Internal->OutputInfoMap.find(config_upper); + if(i == this->Internal->OutputInfoMap.end()) { OutputInfo info; this->ComputeOutputDir(config, false, info.OutDir); this->ComputeOutputDir(config, true, info.ImpDir); OutputInfoMapType::value_type entry(config_upper, info); - i = this->OutputInfoMap.insert(entry).first; + i = this->Internal->OutputInfoMap.insert(entry).first; } return &i->second; } @@ -3416,14 +3440,15 @@ cmTarget::GetImportInfo(const char* config) { config_upper = "NOCONFIG"; } + typedef cmTargetInternals::ImportInfoMapType ImportInfoMapType; ImportInfoMapType::const_iterator i = - this->ImportInfoMap.find(config_upper); - if(i == this->ImportInfoMap.end()) + this->Internal->ImportInfoMap.find(config_upper); + if(i == this->Internal->ImportInfoMap.end()) { ImportInfo info; this->ComputeImportInfo(config_upper, info); ImportInfoMapType::value_type entry(config_upper, info); - i = this->ImportInfoMap.insert(entry).first; + i = this->Internal->ImportInfoMap.insert(entry).first; } // If the location is empty then the target is not available for diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 8b857e07f..ad7e6110d 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -507,27 +507,12 @@ private: bool IsImportedTarget; // Cache target output paths for each configuration. - struct OutputInfo - { - std::string OutDir; - std::string ImpDir; - }; - typedef std::map OutputInfoMapType; - OutputInfoMapType OutputInfoMap; + struct OutputInfo; OutputInfo const* GetOutputInfo(const char* config); void ComputeOutputDir(const char* config, bool implib, std::string& out); // Cache import information from properties for each configuration. - struct ImportInfo - { - bool NoSOName; - std::string Location; - std::string SOName; - std::string ImportLibrary; - cmTarget::LinkInterface LinkInterface; - }; - typedef std::map ImportInfoMapType; - ImportInfoMapType ImportInfoMap; + struct ImportInfo; ImportInfo const* GetImportInfo(const char* config); void ComputeImportInfo(std::string const& desired_config, ImportInfo& info);