浏览代码

cmake-gui: Unset empty CC,CXX on global generator change

On subsequent runs of configure from cmake-gui the global generator is
swapped.  So on runs other than the first it was setting CC and CXX to
empty when they were otherwise undefined.

Instead, restore them if non-empty and unset them if empty when changing
the global generator and a previous generator exists.

Fixes: #21449
Jake Cobb 4 年之前
父节点
当前提交
c3bd5a6a2c
共有 1 个文件被更改,包括 6 次插入3 次删除
  1. 6 3
      Source/cmake.cxx

+ 6 - 3
Source/cmake.cxx

@@ -1751,17 +1751,20 @@ void cmake::SetGlobalGenerator(std::unique_ptr<cmGlobalGenerator> gg)
   }
   if (this->GlobalGenerator) {
     // restore the original environment variables CXX and CC
-    // Restore CC
     std::string env = "CC=";
     if (!this->CCEnvironment.empty()) {
       env += this->CCEnvironment;
+      cmSystemTools::PutEnv(env);
+    } else {
+      cmSystemTools::UnPutEnv(env);
     }
-    cmSystemTools::PutEnv(env);
     env = "CXX=";
     if (!this->CXXEnvironment.empty()) {
       env += this->CXXEnvironment;
+      cmSystemTools::PutEnv(env);
+    } else {
+      cmSystemTools::UnPutEnv(env);
     }
-    cmSystemTools::PutEnv(env);
   }
 
   // set the new