include_directories: Fix handling of empty or space-only entries
Since commit 0d46e9a0
(Store includes from the same include_directories
call together., 2013-01-20) we accidentally use such entries. Fix the
code to drop them instead. Update the IncludeDirectories test to cover
this case.
Reported-by: Christophe Giboudeaux <cgiboudeaux@gmx.com>
This commit is contained in:
parent
5dd8c01429
commit
b8cc6f4eba
|
@ -116,13 +116,19 @@ void cmIncludeDirectoryCommand::GetIncludes(const std::string &arg,
|
||||||
{
|
{
|
||||||
std::string inc = arg.substr(lastPos,pos);
|
std::string inc = arg.substr(lastPos,pos);
|
||||||
this->NormalizeInclude(inc);
|
this->NormalizeInclude(inc);
|
||||||
incs.push_back(inc);
|
if (!inc.empty())
|
||||||
|
{
|
||||||
|
incs.push_back(inc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
lastPos = pos + 1;
|
lastPos = pos + 1;
|
||||||
}
|
}
|
||||||
std::string inc = arg.substr(lastPos);
|
std::string inc = arg.substr(lastPos);
|
||||||
this->NormalizeInclude(inc);
|
this->NormalizeInclude(inc);
|
||||||
incs.push_back(inc);
|
if (!inc.empty())
|
||||||
|
{
|
||||||
|
incs.push_back(inc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmIncludeDirectoryCommand::NormalizeInclude(std::string &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
|
inc.assign(inc, b, 1+e-b); // copy the remaining substring
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
inc = "";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!cmSystemTools::IsOff(inc.c_str()))
|
if (!cmSystemTools::IsOff(inc.c_str()))
|
||||||
{
|
{
|
||||||
|
|
|
@ -58,3 +58,14 @@ get_property(propContentAfter DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
|
||||||
if (NOT propContentAfter STREQUAL "")
|
if (NOT propContentAfter STREQUAL "")
|
||||||
message(SEND_ERROR "Clearing DIRECTORY property failed.")
|
message(SEND_ERROR "Clearing DIRECTORY property failed.")
|
||||||
endif()
|
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()
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
#ifdef _WIN32
|
||||||
|
__declspec(dllexport)
|
||||||
|
#endif
|
||||||
|
int empty() { return 0; }
|
Loading…
Reference in New Issue