I'd say that you shouldn't do this unless you have tested it extensively with very long command lines, making sure that there is a response file fallback if it grows too much. There are issues in CMake already on Windows with long command lines and having even longer ones is not going to help.

/Orphis

On 06/08/2016 01:51, Chaoren Lin via cmake-developers wrote:
From: Chaoren Lin <chaor...@google.com>

This is consistent with the behavior of the Makefile generators.
Relative paths are difficult for an IDE to parse the output of a build
error.
---
  Source/cmNinjaTargetGenerator.cxx | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Source/cmNinjaTargetGenerator.cxx 
b/Source/cmNinjaTargetGenerator.cxx
index 855a243..5b4a55d 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -305,7 +305,7 @@ void cmNinjaTargetGenerator::WriteCompileRule(const 
std::string& lang)
    vars.RuleLauncher = "RULE_LAUNCH_COMPILE";
    vars.CMTarget = this->GetGeneratorTarget();
    vars.Language = lang.c_str();
-  vars.Source = "$in";
+  vars.Source = "$IN_ABS";
    vars.Object = "$out";
    vars.Defines = "$DEFINES";
    vars.Includes = "$INCLUDES";
@@ -529,8 +529,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
    cmSourceFile const* source, bool writeOrderDependsTargetForTarget)
  {
    std::string const language = source->GetLanguage();
-  std::string const sourceFileName =
-    language == "RC" ? source->GetFullPath() : this->GetSourceFilePath(source);
+  std::string const sourceFileName = this->GetSourceFilePath(source);
    std::string const objectDir =
      this->ConvertToNinjaPath(this->GeneratorTarget->GetSupportDirectory());
    std::string const objectFileName =
@@ -539,6 +538,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
      cmSystemTools::GetFilenamePath(objectFileName);
cmNinjaVars vars;
+  vars["IN_ABS"] = source->GetFullPath();
    vars["FLAGS"] = this->ComputeFlagsForObject(source, language);
    vars["DEFINES"] = this->ComputeDefines(source, language);
    vars["INCLUDES"] = this->GetIncludes(language);


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to