diff options
author | Stephen Kelly <steveire@gmail.com> | 2012-11-25 00:15:44 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-01-08 19:14:27 (GMT) |
commit | 9ce1b9ef2946ead0605e766c7dcf1302fe122f3a (patch) | |
tree | dc757e71d66b28948a587c16e2a8b965ccffde01 /Source/cmGlobalGenerator.cxx | |
parent | c2cde7f1047b2f11e7d4a466000a20d8c42394be (diff) | |
download | CMake-9ce1b9ef2946ead0605e766c7dcf1302fe122f3a.zip CMake-9ce1b9ef2946ead0605e766c7dcf1302fe122f3a.tar.gz CMake-9ce1b9ef2946ead0605e766c7dcf1302fe122f3a.tar.bz2 |
Add CMAKE_BUILD_INTERFACE_INCLUDES build-variable.
This makes
set(CMAKE_BUILD_INTERFACE_INCLUDES ON)
add the equivalent of
set_property(TARGET tgt APPEND PROPERTY
INTERFACE_INCLUDE_DIRECTORIES
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}>
)
to every target.
If the headers are in CMAKE_CURRENT_SOURCE_DIR, and the generated headers
are in CMAKE_CURRENT_BINARY_DIR, this is a convenient way to build a target
bar, which depends on foo, just by using target_link_libraries() and adding
the INTERFACE_INCLUDE_DIRECTORIES to the INCLUDE_DIRECTORIES of the target
being linked. There will be more-convenient porcelain API to consume the
property in the future.
Diffstat (limited to 'Source/cmGlobalGenerator.cxx')
-rw-r--r-- | Source/cmGlobalGenerator.cxx | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 0f439e9..d030aa7 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -938,6 +938,23 @@ void cmGlobalGenerator::Generate() (*targets)[tit->first] = tit->second; (*targets)[tit->first].SetMakefile(mf); } + + for ( tit = targets->begin(); tit != targets->end(); ++ tit ) + { + if (mf->IsOn("CMAKE_BUILD_INTERFACE_INCLUDES")) + { + const char *binDir = mf->GetStartOutputDirectory(); + const char *srcDir = mf->GetStartDirectory(); + const std::string dirs = std::string(binDir ? binDir : "") + + std::string(binDir ? ";" : "") + + std::string(srcDir ? srcDir : ""); + if (!dirs.empty()) + { + tit->second.AppendProperty("INTERFACE_INCLUDE_DIRECTORIES", + ("$<BUILD_INTERFACE:" + dirs + ">").c_str()); + } + } + } } // Add generator specific helper commands |