Kaynağa Gözat

Create cmTarget DLL query methods

We creates methods IsDLLPlatform() and HasImportLibrary().  The former
returns true on Windows.  The latter returns whether the target has a
DLL import library.  It is true on Windows for shared libraries and
executables with exports.
Brad King 16 yıl önce
ebeveyn
işleme
463b3f03bd
2 değiştirilmiş dosya ile 15 ekleme ve 3 silme
  1. 9 3
      Source/cmTarget.cxx
  2. 6 0
      Source/cmTarget.h

+ 9 - 3
Source/cmTarget.cxx

@@ -1022,6 +1022,14 @@ bool cmTarget::IsLinkable()
           this->IsExecutableWithExports());
 }
 
+//----------------------------------------------------------------------------
+bool cmTarget::HasImportLibrary()
+{
+  return (this->DLLPlatform &&
+          (this->GetType() == cmTarget::SHARED_LIBRARY ||
+           this->IsExecutableWithExports()));
+}
+
 //----------------------------------------------------------------------------
 bool cmTarget::IsFrameworkOnApple()
 {
@@ -3635,9 +3643,7 @@ void cmTarget::ComputeImportInfo(std::string const& desired_config,
 
   // On a DLL platform there may be only IMPORTED_IMPLIB for a shared
   // library or an executable with exports.
-  bool allowImp =
-    this->DLLPlatform && (this->GetType() == cmTarget::SHARED_LIBRARY ||
-                          this->IsExecutableWithExports());
+  bool allowImp = this->HasImportLibrary();
 
   // Look for a mapping from the current project's configuration to
   // the imported project's configuration.

+ 6 - 0
Source/cmTarget.h

@@ -413,6 +413,12 @@ public:
   /** Return whether this target may be used to link another target.  */
   bool IsLinkable();
 
+  /** Return whether or not the target is for a DLL platform.  */
+  bool IsDLLPlatform() { return this->DLLPlatform; }
+
+  /** Return whether or not the target has a DLL import library.  */
+  bool HasImportLibrary();
+
   /** Return whether this target is a shared library Framework on
       Apple.  */
   bool IsFrameworkOnApple();