从批处理文件设置VS2010环境变量?

时间:2012-12-16 11:49:20

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

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

更具体和清晰:

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

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

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

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

    set TEST_VER=9
    

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

    但它不承认它。 仍然使用5作为值

    我虽然在做: 该项目的职责 - >资源 - >一般 并添加:TEST_VER = $(TEST_VER) 仍然没有工作

    enter image description here

    enter image description here

    有办法吗?

    谢谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果要在事件中分配变量,例如...。

设置ABC = 123

然后,您将不能使用$(ABC),因为在将$(ABC)交给命令行运行之前,它已经得到处理。

您必须使用命令行所使用的%ABC%。它不知道$(ABC)是什么,因为只有Visual Studio才能理解。

为了进一步使事情复杂化,Visual Studio事件编辑器使用%作为转义符。我已经注意到以%D开头的东西是不好的,%K,%Z和%K是好的。

显然,您可以将%25用作%的转义符。

%DESTDIR%不会像乱码一样乱码-因此将其更改为%25DESDIR%25即可解决。