diff options
author | Brad King <brad.king@kitware.com> | 2015-05-18 18:39:25 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2015-05-19 17:16:29 (GMT) |
commit | ada5ffce7bad40c56e5d0dd76b9a7b30c96a9e92 (patch) | |
tree | 31755e49ec06997658c4cc24ef3ae33f1b3869df /Source/cmMakefileTargetGenerator.cxx | |
parent | 67fa3da9e84888029d128280f35a8e7b3d208377 (diff) | |
download | CMake-ada5ffce7bad40c56e5d0dd76b9a7b30c96a9e92.zip CMake-ada5ffce7bad40c56e5d0dd76b9a7b30c96a9e92.tar.gz CMake-ada5ffce7bad40c56e5d0dd76b9a7b30c96a9e92.tar.bz2 |
Add options to run include-what-you-use with the compiler
Create a <LANG>_INCLUDE_WHAT_YOU_USE target property (initialized by a
CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE variable) to specify an IWYU command
line to be run along with the compiler.
Diffstat (limited to 'Source/cmMakefileTargetGenerator.cxx')
-rw-r--r-- | Source/cmMakefileTargetGenerator.cxx | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 2ee23d1..893b70d 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -768,6 +768,20 @@ cmMakefileTargetGenerator this->LocalGenerator->ExpandRuleVariables(*i, vars); } + // Maybe insert an include-what-you-use runner. + if (!compileCommands.empty() && (lang == "C" || lang == "CXX")) + { + std::string const iwyu_prop = lang + "_INCLUDE_WHAT_YOU_USE"; + const char *iwyu = this->Target->GetProperty(iwyu_prop); + if (iwyu && *iwyu) + { + std::string run_iwyu = "$(CMAKE_COMMAND) -E __run_iwyu --iwyu="; + run_iwyu += this->LocalGenerator->EscapeForShell(iwyu); + run_iwyu += " -- "; + compileCommands.front().insert(0, run_iwyu); + } + } + // Change the command working directory to the local build tree. this->LocalGenerator->CreateCDCommand (compileCommands, |