diff options
author | Brad King <brad.king@kitware.com> | 2017-11-17 19:46:53 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-11-20 18:51:25 (GMT) |
commit | 2ae880fa8f04a2026939b1df9613b64a301aa522 (patch) | |
tree | a0b87a17d369cb7b81360752bdbb8ab4d9ebdd29 /Source/cmGeneratorExpressionNode.cxx | |
parent | 2b7d59f3109483bfa45dc41e2a2f6a2f82addfec (diff) | |
download | CMake-2ae880fa8f04a2026939b1df9613b64a301aa522.zip CMake-2ae880fa8f04a2026939b1df9613b64a301aa522.tar.gz CMake-2ae880fa8f04a2026939b1df9613b64a301aa522.tar.bz2 |
Genex: Enable COMPILE_LANGUAGE for COMPILE_OPTIONS with Visual Studio
Since commit v3.9.0-rc4~3^2~1 (VS: Fix target_compile_options for CUDA,
2017-06-21), the evaluation of `COMPILE_LANGUAGE` receives the proper
language. The set of compile flags used for a target's C and C++
sources is based on the linker language. By default this is always the
C++ flags if any C++ sources appear in the target, and otherwise the C
flags. Therefore we can define the `COMPILE_LANGUAGE` generator
expression in `COMPILE_OPTIONS` to match the selected language.
This is not exactly the same as for other generators, but is the best VS
can do. It is also sufficient for many use cases since the set of
allowed flags for C and C++ is almost the same in Visual Studio.
Furthermore, since the VS generator moves many of the flags to
declarative `.vcxproj` elements, it will automatically avoid passing
C++ flags for C sources.
Issue: #17435
Diffstat (limited to 'Source/cmGeneratorExpressionNode.cxx')
-rw-r--r-- | Source/cmGeneratorExpressionNode.cxx | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index 5068560..3d311d6 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -829,12 +829,11 @@ static const struct CompileLanguageNode : public cmGeneratorExpressionNode std::string genName = gg->GetName(); if (genName.find("Visual Studio") != std::string::npos) { if (dagChecker && (dagChecker->EvaluatingCompileDefinitions() || - dagChecker->EvaluatingCompileOptions() || dagChecker->EvaluatingIncludeDirectories())) { reportError( context, content->GetOriginalExpression(), - "$<COMPILE_LANGUAGE:...> may only be used for file(GENERATE) " - "with the Visual Studio generator."); + "$<COMPILE_LANGUAGE:...> may only be used for COMPILE_OPTIONS " + "and file(GENERATE) with the Visual Studio generator."); return std::string(); } } else if (genName.find("Xcode") != std::string::npos) { |