mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-07 06:09:52 -06:00
Makefile,Ninja: Use tool-specific response file flag for include dirs
When we use a response file for `-I` flags, not all compilers support the `@<file>` syntax. Define `CMAKE_<LANG>_RESPONSE_FILE_FLAG` to specify tool-specific flag, just as we do for linking already via `CMAKE_<LANG>_RESPONSE_FILE_LINK_FLAG`.
This commit is contained in:
@@ -1625,10 +1625,17 @@ void cmMakefileTargetGenerator::AddIncludeFlags(std::string& flags,
|
||||
}
|
||||
|
||||
if (useResponseFile) {
|
||||
std::string const responseFlagVar =
|
||||
"CMAKE_" + lang + "_RESPONSE_FILE_FLAG";
|
||||
std::string responseFlag =
|
||||
this->Makefile->GetSafeDefinition(responseFlagVar);
|
||||
if (responseFlag.empty()) {
|
||||
responseFlag = "@";
|
||||
}
|
||||
std::string name = "includes_";
|
||||
name += lang;
|
||||
name += ".rsp";
|
||||
std::string arg = "@" +
|
||||
std::string arg = std::move(responseFlag) +
|
||||
this->CreateResponseFile(name.c_str(), includeFlags,
|
||||
this->FlagFileDepends[lang]);
|
||||
this->LocalGenerator->AppendFlags(flags, arg);
|
||||
|
||||
@@ -416,14 +416,20 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang)
|
||||
std::string flags = "$FLAGS";
|
||||
std::string rspfile;
|
||||
std::string rspcontent;
|
||||
std::string responseFlag;
|
||||
|
||||
bool const lang_supports_response = !(lang == "RC" || lang == "CUDA");
|
||||
if (lang_supports_response && this->ForceResponseFile()) {
|
||||
std::string const responseFlagVar =
|
||||
"CMAKE_" + lang + "_RESPONSE_FILE_FLAG";
|
||||
std::string responseFlag =
|
||||
this->Makefile->GetSafeDefinition(responseFlagVar);
|
||||
if (responseFlag.empty()) {
|
||||
responseFlag = "@";
|
||||
}
|
||||
rspfile = "$RSP_FILE";
|
||||
responseFlag = "@" + rspfile;
|
||||
responseFlag += rspfile;
|
||||
rspcontent = " $DEFINES $INCLUDES $FLAGS";
|
||||
flags = responseFlag;
|
||||
flags = std::move(responseFlag);
|
||||
vars.Defines = "";
|
||||
vars.Includes = "";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user