summaryrefslogtreecommitdiffstats
path: root/Source/cmTarget.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2007-03-28 03:13:25 (GMT)
committerBrad King <brad.king@kitware.com>2007-03-28 03:13:25 (GMT)
commitaf95f61d76f2a9e86aed35adae5302c8c60fdb35 (patch)
tree7ca8e89bb2b0f6d634f4858890041e9480fa67e8 /Source/cmTarget.cxx
parent341853c887bcf54a5476bec71216ef34dd5b9295 (diff)
downloadCMake-af95f61d76f2a9e86aed35adae5302c8c60fdb35.zip
CMake-af95f61d76f2a9e86aed35adae5302c8c60fdb35.tar.gz
CMake-af95f61d76f2a9e86aed35adae5302c8c60fdb35.tar.bz2
ENH: Created method cmTarget::GetExportMacro to centralize computation of the export symbol name. This removes duplicate code from all the generators. Also enabled the export definition for executable targets with the ENABLE_EXPORTS property set.
Diffstat (limited to 'Source/cmTarget.cxx')
-rw-r--r--Source/cmTarget.cxx27
1 files changed, 27 insertions, 0 deletions
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 441269c..c4dc29e 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -2157,3 +2157,30 @@ const char* cmTarget::GetOutputDir(bool implib)
return out.c_str();
}
+
+//----------------------------------------------------------------------------
+const char* cmTarget::GetExportMacro()
+{
+ // Define the symbol for targets that export symbols.
+ if(this->GetType() == cmTarget::SHARED_LIBRARY ||
+ this->GetType() == cmTarget::MODULE_LIBRARY ||
+ this->GetType() == cmTarget::EXECUTABLE &&
+ this->GetPropertyAsBool("ENABLE_EXPORTS"))
+ {
+ if(const char* custom_export_name = this->GetProperty("DEFINE_SYMBOL"))
+ {
+ this->ExportMacro = custom_export_name;
+ }
+ else
+ {
+ std::string in = this->GetName();
+ in += "_EXPORTS";
+ this->ExportMacro = cmSystemTools::MakeCindentifier(in.c_str());
+ }
+ return this->ExportMacro.c_str();
+ }
+ else
+ {
+ return 0;
+ }
+}