Skip to content
Snippets Groups Projects
Commit 5790aca4 authored by Gregor Jasny's avatar Gregor Jasny Committed by Brad King
Browse files

target_include_directories: Support relative SYSTEM include dirs (#15464)

parent 422d3f68
No related branches found
No related tags found
No related merge requests found
......@@ -75,7 +75,23 @@ bool cmTargetIncludeDirectoriesCommand
tgt->InsertInclude(this->Join(content), lfbt, prepend);
if (system)
{
tgt->AddSystemIncludeDirectories(content);
std::string prefix =
this->Makefile->GetCurrentSourceDirectory() + std::string("/");
std::set<std::string> sdirs;
for (std::vector<std::string>::const_iterator it = content.begin();
it != content.end(); ++it)
{
if (cmSystemTools::FileIsFullPath(it->c_str())
|| cmGeneratorExpression::Find(*it) == 0)
{
sdirs.insert(*it);
}
else
{
sdirs.insert(prefix + *it);
}
}
tgt->AddSystemIncludeDirectories(sdirs);
}
return true;
}
......@@ -91,7 +107,7 @@ void cmTargetIncludeDirectoriesCommand
if (system)
{
std::string joined = cmJoin(content, ";");
std::string joined = this->Join(content);
tgt->AppendProperty("INTERFACE_SYSTEM_INCLUDE_DIRECTORIES",
joined.c_str());
}
......
......@@ -35,6 +35,16 @@ add_library(imported_consumer2 imported_consumer.cpp)
target_link_libraries(imported_consumer2 imported_consumer)
target_compile_options(imported_consumer2 PRIVATE -Werror=unused-variable)
# add a target which has a relative system include
add_library(somelib imported_consumer.cpp)
target_include_directories(somelib SYSTEM PUBLIC "systemlib_header_only")
target_compile_options(somelib PRIVATE -Werror=unused-variable)
# add a target which consumes a relative system include
add_library(otherlib upstream.cpp)
target_link_libraries(otherlib PUBLIC somelib)
target_compile_options(somelib PRIVATE -Werror=unused-variable)
macro(do_try_compile error_option)
set(TC_ARGS
IFACE_TRY_COMPILE_${error_option}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment