Jelajahi Sumber

Merge topic 'trace-expand'

594bafe5 cmake: add --trace-expand option
Brad King 10 tahun lalu
induk
melakukan
280dde34dd

+ 7 - 3
Help/manual/cmake.1.rst

@@ -113,14 +113,18 @@ Options
 ``--debug-output``
  Put cmake in a debug mode.
 
- Print extra stuff during the cmake run like stack traces with
+ Print extra information during the cmake run like stack traces with
  message(send_error ) calls.
 
 ``--trace``
  Put cmake in trace mode.
 
- Print a trace of all calls made and from where with
- message(send_error ) calls.
+ Print a trace of all calls made and from where.
+
+``--trace-expand``
+ Put cmake in trace mode.
+
+ Like ``--trace``, but with variables expanded.
 
 ``--warn-uninitialized``
  Warn about uninitialized values.

+ 5 - 0
Help/release/dev/trace-expand.rst

@@ -0,0 +1,5 @@
+trace-expand
+------------
+
+* Add ``--trace-expand`` argument to CMake. Acts like ``--trace``, but expands
+  variable references in the output.

+ 2 - 2
Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst

@@ -17,5 +17,5 @@ warn by default:
 This variable should not be set by a project in CMake code.  Project
 developers running CMake may set this variable in their cache to
 enable the warning (e.g. ``-DCMAKE_POLICY_WARNING_CMP<NNNN>=ON``).
-Alternatively, running :manual:`cmake(1)` with the ``--debug-output``
-or ``--trace`` option will also enable the warning.
+Alternatively, running :manual:`cmake(1)` with the ``--debug-output``,
+``--trace``, or ``--trace-expand`` option will also enable the warning.

+ 14 - 2
Source/cmMakefile.cxx

@@ -339,10 +339,21 @@ void cmMakefile::PrintCommandTrace(const cmListFileFunction& lff) const
   std::ostringstream msg;
   msg << this->GetExecutionFilePath() << "(" << lff.Line << "):  ";
   msg << lff.Name << "(";
+  bool expand = this->GetCMakeInstance()->GetTraceExpand();
+  std::string temp;
   for(std::vector<cmListFileArgument>::const_iterator i =
         lff.Arguments.begin(); i != lff.Arguments.end(); ++i)
     {
-    msg << i->Value;
+    if (expand)
+      {
+      temp = i->Value;
+      this->ExpandVariablesInString(temp);
+      msg << temp;
+      }
+    else
+      {
+      msg << i->Value;
+      }
     msg << " ";
     }
   msg << ")";
@@ -4773,7 +4784,8 @@ bool cmMakefile::PolicyOptionalWarningEnabled(std::string const& var)
       return cmSystemTools::IsOn(val);
       }
     }
-  // Enable optional policy warnings with --debug-output or --trace.
+  // Enable optional policy warnings with --debug-output, --trace,
+  // or --trace-expand.
   cmake* cm = this->GetCMakeInstance();
   return cm->GetDebugOutput() || cm->GetTrace();
 }

+ 8 - 0
Source/cmake.cxx

@@ -121,6 +121,7 @@ void cmWarnUnusedCliWarning(const std::string& variable,
 cmake::cmake()
 {
   this->Trace = false;
+  this->TraceExpand = false;
   this->WarnUninitialized = false;
   this->WarnUnused = false;
   this->WarnUnusedCli = true;
@@ -617,10 +618,17 @@ void cmake::SetArgs(const std::vector<std::string>& args,
       std::cout << "Running with debug output on.\n";
       this->SetDebugOutputOn(true);
       }
+    else if(arg.find("--trace-expand",0) == 0)
+      {
+      std::cout << "Running with expanded trace output on.\n";
+      this->SetTrace(true);
+      this->SetTraceExpand(true);
+      }
     else if(arg.find("--trace",0) == 0)
       {
       std::cout << "Running with trace output on.\n";
       this->SetTrace(true);
+      this->SetTraceExpand(false);
       }
     else if(arg.find("--warn-uninitialized",0) == 0)
       {

+ 3 - 0
Source/cmake.h

@@ -270,6 +270,8 @@ class cmake
   // Do we want trace output during the cmake run.
   bool GetTrace() { return this->Trace;}
   void SetTrace(bool b) {  this->Trace = b;}
+  bool GetTraceExpand() { return this->TraceExpand;}
+  void SetTraceExpand(bool b) {  this->TraceExpand = b;}
   bool GetWarnUninitialized() { return this->WarnUninitialized;}
   void SetWarnUninitialized(bool b) {  this->WarnUninitialized = b;}
   bool GetWarnUnused() { return this->WarnUnused;}
@@ -378,6 +380,7 @@ private:
   WorkingMode CurrentWorkingMode;
   bool DebugOutput;
   bool Trace;
+  bool TraceExpand;
   bool WarnUninitialized;
   bool WarnUnused;
   bool WarnUnusedCli;

+ 1 - 0
Source/cmakemain.cxx

@@ -83,6 +83,7 @@ static const char * cmDocumentationOptions[][2] =
    "useful on one try_compile at a time."},
   {"--debug-output", "Put cmake in a debug mode."},
   {"--trace", "Put cmake in trace mode."},
+  {"--trace-expand", "Put cmake in trace mode with variable expansion."},
   {"--warn-uninitialized", "Warn about uninitialized values."},
   {"--warn-unused-vars", "Warn about unused variables."},
   {"--no-warn-unused-cli", "Don't warn about command line options."},

+ 4 - 0
Tests/RunCMake/CommandLine/RunCMakeTest.cmake

@@ -140,6 +140,10 @@ set(RunCMake_TEST_OPTIONS --trace)
 run_cmake(trace)
 unset(RunCMake_TEST_OPTIONS)
 
+set(RunCMake_TEST_OPTIONS --trace-expand)
+run_cmake(trace-expand)
+unset(RunCMake_TEST_OPTIONS)
+
 set(RunCMake_TEST_OPTIONS --debug-trycompile)
 run_cmake(debug-trycompile)
 unset(RunCMake_TEST_OPTIONS)

+ 2 - 0
Tests/RunCMake/CommandLine/trace-expand-stderr.txt

@@ -0,0 +1,2 @@
+^.*/Tests/RunCMake/CommandLine/CMakeLists.txt\(1\):  cmake_minimum_required\(VERSION 3.0 \)
+.*/Tests/RunCMake/CommandLine/CMakeLists.txt\(2\):  project\(trace-expand NONE \)

+ 0 - 0
Tests/RunCMake/CommandLine/trace-expand.cmake