【问题标题】:Setting a VS2010 environment variable from a batch file?从批处理文件中设置 VS2010 环境变量?
【发布时间】:2012-12-16 11:49:20
【问题描述】:

我正在使用批处理文件来定义一些将在我的程序中使用的变量。 我希望批处理文件更改环境变量并在我的代码中使用它,但它现在才开始工作 - 宏没有被更改。

更具体和明确:

  1. 我有一个程序可以创建一个 DLL 并设置它的版本

  2. 在项目的通用设置中-我新建了一个宏(通用属性->用户宏):TEST_VER = 5

  3. 现在我想添加一个批处理文件,它将在预构建命令中运行并更改 TESTER 的值

我在批处理文件中写了这个:

set TEST_VER=9

并在预构建中使用了批处理的路径。

但它不认识它。 并且仍然使用 5 作为值

我虽然这样做: 项目的属性->资源->一般 并添加: TEST_VER=$(TEST_VER) 还是不行

有什么办法吗??

谢谢!!

【问题讨论】:

  • 您可能需要管理员权限才能设置环境变量。
  • 我注意到(至少从您的屏幕截图中)您的批处理文件设置了一个名为 TESTER 的变量,而您的 VS2010 宏显示 TEST_VER。哪一个被设置或没有被设置?
  • 我的错,我的 TEST_VER 和 TESTER 是一样的。只是在这里写了 TESTER。改了!。为什么管理员权限?这是我的环境变量...我做了:TEST_VER=$(TEST_VER) 但它也不起作用
  • 也许试试 setx 而不是 set?
  • 在批处理文件中?试过......但它给了我非法的语法......我应该在批处理中使用 setx 吗?资源?我真的不知道

标签: c++ visual-studio-2010 batch-file environment-variables pre-build-event


【解决方案1】:

当 Visual Studio 启动一个程序时,它会在一个新的子进程中运行该程序。在这种情况下,这是一个新的 CMD.EXE,即命令提示符外壳。在子进程(子进程)中对环境所做的更改对父进程没有影响。 Visual Studio 有自己的一组环境变量,它在启动时继承。您的批处理文件无法更改这些值。你不能按照自己的方式做你想做的事。

【讨论】:

  • 感谢@librik。有什么办法可以做到吗?我想以某种方式使用预构建事件来定义变量(例如:#define major 6)但不使用标题?或创建此标头的批处理文件?谢谢!
  • 您可以打开一个新的命令提示符,在其中设置环境变量,然后从其中启动 VS。 VS 将从该命令提示符处获取环境。
  • 有没有办法在构建过程中传递值,这些值将用作我的#define VALUEs?
  • 你可以尝试生成一个#defines你的值的头文件,然后在你的项目中#include那个文件。
猜你喜欢
  • 1970-01-01
  • 2011-04-17
  • 2014-03-03
  • 1970-01-01
  • 2011-10-02
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多