cl.exe Visual Studio 2008 中的包装器

cl.exe wrapper in Visual Studio 2008

本文关键字:包装 2008 exe Visual Studio cl      更新时间:2023-10-16

我在C++中为cl.exe(Visual Studio编译器(创建了一个包装器。为此,我更改了PATH环境变量,以便Visual Studio首先找到我的cl.exe。在我的cl.exe中,我创建了一个进程,该进程使用cl.exe得到的参数运行实际cl.exe

这样做的目的是过滤真实cl.exe的输出,以删除我们无法执行任何操作的警告。我们希望打开"检测 64 位概率问题",因为它很棒,但它会发出警告。

警告:

cl : 命令行警告 D9035 : 选项"Wp64"已被弃用,将在将来的版本中删除

我已经搜索了好几天关于如何删除此特定警告的信息,这不是您可以使用代码或普通警告等选项关闭的警告。

问题:Visual Studios运行我的cl.exe,然后我的cl.exe运行真正的cl.exe,但从那时起,我的cl.exe不再接收输出。我已经通过让它调用真实cl.exe以外的内容来测试这一点,我的cl.exe可以完全控制输出......

任何一个cl.exe文件的任何输出都显示在 Visual Studio 的输出框中,但我的cl.exe不再接收来自真实cl.exe的任何输出......

我正在使用管道来处理cl.exe中的输出,它适用于真实cl.exe以外的任何东西。

为什么我的cl.exe不管理输出?Visual Studio是否忘记了我的cl.exe并以某种方式将自己附加到真实的?

另外,除了为cl.exe创建包装器以摆脱此警告之外,还有其他解决方案吗?

我已经想通了。

这个来自视觉工作室的环境变量以某种方式用于向真正的cl发出信号.exe将其输出发送到视觉工作室。

VS_UNICODE_OUTPUT=4209

清除此选项允许我的应用程序再次处理输出。

感谢您的帮助...!

看起来您正在重定向"真正的"cl.exe stdout,但不是stderrstderr而这正是人们期望编译器警告去的地方。