diff options
author | Brad King <brad.king@kitware.com> | 2017-04-11 18:08:19 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-04-18 13:03:33 (GMT) |
commit | 25f3f22a1a952b98e7dc6772ef5fedd4932d0901 (patch) | |
tree | a45f07d831a666a346bd1ae62e8836807b95dd97 | |
parent | d596c5504e8ee9e1cc51ddbf7a29815dd07fc05f (diff) | |
download | CMake-25f3f22a1a952b98e7dc6772ef5fedd4932d0901.zip CMake-25f3f22a1a952b98e7dc6772ef5fedd4932d0901.tar.gz CMake-25f3f22a1a952b98e7dc6772ef5fedd4932d0901.tar.bz2 |
cmGlobalGenerator: Add method to check if object file location is known
Add a `HasKnownObjectFileLocation` method returning whether we know the
exact location of object files produced by the native build system.
This is true everywhere except on Xcode when an architecture placeholder
is used.
-rw-r--r-- | Source/cmGlobalGenerator.h | 5 | ||||
-rw-r--r-- | Source/cmGlobalXCodeGenerator.cxx | 12 | ||||
-rw-r--r-- | Source/cmGlobalXCodeGenerator.h | 2 |
3 files changed, 19 insertions, 0 deletions
diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 4200b21..aa2dd22 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -331,6 +331,11 @@ public: i.e. "Can I build Debug and Release in the same tree?" */ virtual bool IsMultiConfig() const { return false; } + /** Return true if we know the exact location of object files. + If false, store the reason in the given string. + This is meaningful only after EnableLanguage has been called. */ + virtual bool HasKnownObjectFileLocation(std::string*) const { return true; } + virtual bool UseFolderProperty() const; virtual bool IsIPOSupported() const { return false; } diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index ecc3e31..8c1c0e7 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -3720,6 +3720,18 @@ bool cmGlobalXCodeGenerator::IsMultiConfig() const return true; } +bool cmGlobalXCodeGenerator::HasKnownObjectFileLocation( + std::string* reason) const +{ + if (this->ObjectDirArch.find('$') != std::string::npos) { + if (reason != CM_NULLPTR) { + *reason = " under Xcode with multiple architectures"; + } + return false; + } + return true; +} + bool cmGlobalXCodeGenerator::UseEffectivePlatformName(cmMakefile* mf) const { const char* epnValue = diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h index 982dabd..a733d5c 100644 --- a/Source/cmGlobalXCodeGenerator.h +++ b/Source/cmGlobalXCodeGenerator.h @@ -87,6 +87,8 @@ public: i.e. "Can I build Debug and Release in the same tree?" */ bool IsMultiConfig() const CM_OVERRIDE; + bool HasKnownObjectFileLocation(std::string* reason) const CM_OVERRIDE; + bool UseEffectivePlatformName(cmMakefile* mf) const CM_OVERRIDE; bool ShouldStripResourcePath(cmMakefile*) const CM_OVERRIDE; |