Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从批处理文件设置VS2010环境变量?_C++_Visual Studio 2010_Batch File_Environment Variables_Pre Build Event - Fatal编程技术网

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

C++ 从批处理文件设置VS2010环境变量?,c++,visual-studio-2010,batch-file,environment-variables,pre-build-event,C++,Visual Studio 2010,Batch File,Environment Variables,Pre Build Event,我正在使用批处理文件来定义一些变量,这些变量将在我的程序中使用。 我想让批处理文件更改环境变量并在代码中使用它,但它现在正在工作-宏没有被更改 更具体、更清楚地说: 我有一个程序,可以创建一个DLL并设置它的版本 在项目的公共设置中,我创建了一个新宏(公共属性->用户宏):TEST\u VER=5 现在我想添加一个批处理文件,它将在pre-build命令中运行并更改TESTER的值 我在批处理文件中写到: set TEST_VER=9 并在预构建中使用批处理的路径 但它不认识它。 并且仍然使用

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

更具体、更清楚地说:

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

  • 在项目的公共设置中,我创建了一个新宏(公共属性->用户宏):
    TEST\u VER=5

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

  • 我在批处理文件中写到:

    set TEST_VER=9
    
    并在预构建中使用批处理的路径

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

    我想这样做: 项目属性->资源->概述 并添加:TEST\u VER=$(TEST\u VER) 但还是不起作用

    有办法吗


    谢谢

    当Visual Studio启动一个程序时,它会在新的子进程中运行该程序。在本例中,这是一个新的CMD.EXE,即命令提示符shell。在子进程(子进程)中对环境所做的更改对父进程没有影响。VisualStudio有自己的一组环境变量,它在启动时继承了这些变量。批处理文件无法更改这些值。您不能按自己的方式执行任何操作。

    您可能需要管理员权限来设置环境变量。我注意到(至少从您的屏幕截图中)批处理文件设置了一个名为TESTER的变量,而VS2010宏显示的是TEST\r。哪一个是或不是被设置的?我的错,我的测试版本和测试仪是一样的。刚刚在这里写到测试仪。换了!。为什么是管理员权限?这是我的环境变量。。。我做到了:TEST\u VER=$(TEST\u VER),但它也不起作用。在批处理文件中,可以尝试setx而不是set?尝试但是它给了我非法的语法。。我是否应该在批次中不使用setx??资源?我真的不知道谢谢@librik。有什么办法我能做到吗?我想以某种方式使用预构建事件来定义变量(比如:#define major 6),但不使用头?还是创建此标头的批处理文件?非常感谢。您可以打开一个新的命令提示符,在其中设置环境变量,然后从其中启动VS。VS将从该命令提示符获取环境。是否有方法在生成过程中传递值,并将这些值用作我的“定义值”?您可以尝试生成一个头文件,该头文件定义您的值,然后将该文件包含在项目中。