diff options
author | Brad King <brad.king@kitware.com> | 2008-01-18 01:34:10 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2008-01-18 01:34:10 (GMT) |
commit | 9d57dbd098d91123eeec76eef502dcb5c4ba5c89 (patch) | |
tree | eff2ac71f8f3b09a2dc7ff2a39970b7397446121 /Source/cmMakefile.cxx | |
parent | 8d1d5500c8cb7ebabce73777c79c33074e679ab5 (diff) | |
download | CMake-9d57dbd098d91123eeec76eef502dcb5c4ba5c89.zip CMake-9d57dbd098d91123eeec76eef502dcb5c4ba5c89.tar.gz CMake-9d57dbd098d91123eeec76eef502dcb5c4ba5c89.tar.bz2 |
ENH: Make per-configuration COMPILE_DEFINITIONS_<CONFIG> directory property initialized from parent.
Diffstat (limited to 'Source/cmMakefile.cxx')
-rw-r--r-- | Source/cmMakefile.cxx | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 62872d0..5d2464f 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1134,9 +1134,30 @@ void cmMakefile::InitializeFromParent() // define flags this->DefineFlags = parent->DefineFlags; - // compile definitions property + // compile definitions property and per-config versions + { this->SetProperty("COMPILE_DEFINITIONS", parent->GetProperty("COMPILE_DEFINITIONS")); + std::vector<std::string> configs; + if(const char* configTypes = + this->GetDefinition("CMAKE_CONFIGURATION_TYPES")) + { + cmSystemTools::ExpandListArgument(configTypes, configs); + } + else if(const char* buildType = + this->GetDefinition("CMAKE_BUILD_TYPE")) + { + configs.push_back(buildType); + } + for(std::vector<std::string>::const_iterator ci = configs.begin(); + ci != configs.end(); ++ci) + { + std::string defPropName = "COMPILE_DEFINITIONS_"; + defPropName += cmSystemTools::UpperCase(*ci); + this->SetProperty(defPropName.c_str(), + parent->GetProperty(defPropName.c_str())); + } + } // link libraries this->LinkLibraries = parent->LinkLibraries; @@ -3046,7 +3067,9 @@ void cmMakefile::DefineProperties(cmake *cm) "language syntax may require escapes to specify some values). " "This property may be set on a per-configuration basis using the name " "COMPILE_DEFINITIONS_<CONFIG> where <CONFIG> is an upper-case name " - "(ex. \"COMPILE_DEFINITIONS_DEBUG\").\n" + "(ex. \"COMPILE_DEFINITIONS_DEBUG\"). " + "This property will be initialized in each directory by its value " + "in the directory's parent.\n" "CMake will automatically drop some definitions that " "are not supported by the native build tool. " "The VS6 IDE does not support definitions with values " @@ -3063,7 +3086,9 @@ void cmMakefile::DefineProperties(cmake *cm) cm->DefineProperty ("COMPILE_DEFINITIONS_<CONFIG>", cmProperty::DIRECTORY, "Per-configuration preprocessor definitions in a directory.", - "This is the configuration-specific version of COMPILE_DEFINITIONS."); + "This is the configuration-specific version of COMPILE_DEFINITIONS. " + "This property will be initialized in each directory by its value " + "in the directory's parent.\n"); cm->DefineProperty ("EXCLUDE_FROM_ALL", cmProperty::DIRECTORY, |