Преглед на файлове

include_directories: Fix handling of empty or space-only entries

This is a regression introduced in commit 0d46e9a0 (Store includes
from the same include_directories call together., 2013-01-20).

Reported at

 http://thread.gmane.org/gmane.comp.programming.tools.cmake.user/46695/focus=7847
Stephen Kelly преди 12 години
родител
ревизия
2f84dfec93
променени са 3 файла, в които са добавени 25 реда и са изтрити 2 реда
  1. 13 2
      Source/cmIncludeDirectoryCommand.cxx
  2. 11 0
      Tests/IncludeDirectories/CMakeLists.txt
  3. 1 0
      Tests/IncludeDirectories/empty.cpp

+ 13 - 2
Source/cmIncludeDirectoryCommand.cxx

@@ -116,13 +116,19 @@ void cmIncludeDirectoryCommand::GetIncludes(const std::string &arg,
       {
       std::string inc = arg.substr(lastPos,pos);
       this->NormalizeInclude(inc);
-      incs.push_back(inc);
+      if (!inc.empty())
+        {
+        incs.push_back(inc);
+        }
       }
     lastPos = pos + 1;
     }
   std::string inc = arg.substr(lastPos);
   this->NormalizeInclude(inc);
-  incs.push_back(inc);
+  if (!inc.empty())
+    {
+    incs.push_back(inc);
+    }
 }
 
 void cmIncludeDirectoryCommand::NormalizeInclude(std::string &inc)
@@ -133,6 +139,11 @@ void cmIncludeDirectoryCommand::NormalizeInclude(std::string &inc)
     {
     inc.assign(inc, b, 1+e-b);   // copy the remaining substring
     }
+  else
+    {
+    inc = "";
+    return;
+    }
 
   if (!cmSystemTools::IsOff(inc.c_str()))
     {

+ 11 - 0
Tests/IncludeDirectories/CMakeLists.txt

@@ -58,3 +58,14 @@ get_property(propContentAfter DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
 if (NOT propContentAfter STREQUAL "")
   message(SEND_ERROR "Clearing DIRECTORY property failed.")
 endif()
+
+add_library(empty_entry_test SHARED empty.cpp)
+set_target_properties(empty_entry_test PROPERTIES INCLUDE_DIRECTORIES "")
+include_directories(/one/two
+  " "
+  "  "
+)
+get_target_property(incs empty_entry_test INCLUDE_DIRECTORIES)
+if (NOT incs STREQUAL ";/one/two")
+  message(SEND_ERROR "Empty include_directories entry was not ignored.")
+endif()

+ 1 - 0
Tests/IncludeDirectories/empty.cpp

@@ -0,0 +1 @@
+// No content