浏览代码

ENH: Use vector of plain strings and add cmake -E command for getting environment

Andy Cedilnik 20 年之前
父节点
当前提交
fe1fda6431
共有 3 个文件被更改,包括 21 次插入8 次删除
  1. 2 2
      Source/cmSystemTools.cxx
  2. 1 1
      Source/cmSystemTools.h
  3. 18 5
      Source/cmake.cxx

+ 2 - 2
Source/cmSystemTools.cxx

@@ -1280,9 +1280,9 @@ bool cmSystemTools::PutEnv(const char* value)
   return ret == 0;
 }
 
-std::vector<cmStdString> cmSystemTools::GetEnvironmentVariables()
+std::vector<std::string> cmSystemTools::GetEnvironmentVariables()
 {
-  std::vector<cmStdString> env;
+  std::vector<std::string> env;
   int cc;
   for ( cc = 0; environ[cc]; ++ cc )
     {

+ 1 - 1
Source/cmSystemTools.h

@@ -294,7 +294,7 @@ public:
   /** put a string into the environment
       of the form var=value */
   static bool PutEnv(const char* value);
-  static std::vector<cmStdString> GetEnvironmentVariables();
+  static std::vector<std::string> GetEnvironmentVariables();
 
   /** Setup the environment to enable VS 8 IDE output.  */
   static void EnableVSConsoleOutput();

+ 18 - 5
Source/cmake.cxx

@@ -745,18 +745,18 @@ void CMakeCommandUsage(const char* program)
     "content to directory 'destination'\n"
     << "  compare_files file1 file2 - check if file1 is same as file2\n"
     << "  echo [string]...        - displays arguments as text\n"
+    << "  environment             - display the current enviroment\n"
     << "  remove file1 file2 ...  - remove the file(s)\n"
     << "  tar [cxt][vfz] file.tar file/dir1 file/dir2 ... - create a tar.\n"
-    << "  time command [args] ... - run command and return elapsed time\n";
+    << "  time command [args] ... - run command and return elapsed time\n"
 #if defined(_WIN32) && !defined(__CYGWIN__)
-  errorStream
     << "  write_regv key value    - write registry value\n"
     << "  delete_regv key         - delete registry value\n"
-    << "  comspec                 - on windows 9x use this for RunCommand\n";
+    << "  comspec                 - on windows 9x use this for RunCommand\n"
 #else
-  errorStream
-    << "  create_symlink old new  - create a symbolic link new -> old\n";
+    << "  create_symlink old new  - create a symbolic link new -> old\n"
 #endif
+    ;
 
   cmSystemTools::Error(errorStream.str().c_str());
 }
@@ -831,6 +831,19 @@ int cmake::ExecuteCMakeCommand(std::vector<std::string>& args)
       return 0;
       }
 
+    // Command to create a symbolic link.  Fails on platforms not
+    // supporting them.
+    else if (args[1] == "environment" )
+      {
+      std::vector<std::string> env = cmSystemTools::GetEnvironmentVariables();
+      std::vector<std::string>::iterator it;
+      for ( it = env.begin(); it != env.end(); ++ it )
+        {
+        std::cout << it->c_str() << std::endl;
+        }
+      return 0;
+      }
+
     // Remove file
     else if (args[1] == "remove" && args.size() > 2)
       {