繁体   English   中英

如何在我的 vcxproj 文件中打印完整的 cl.exe 路径?

[英]How can I print full cl.exe path in my vcxproj file?

对于自定义构建目标,我希望拥有在 ClCompile 目标中调用的正确版本 cl.exe 的完整路径。

检索路径到 cl.exe ,我得到它是%VCINSTALLDIR%\\bin\\x86\\Hostx86\\cl.exe%VCINSTALLDIR%\\bin\\x64\\Hostx64\\cl.exe ,但我不想为 x84 编写程序与 x64 逻辑。

在 VCTargets\\Microsoft.CppCommon.Targets 中,我发现 ToolExe 和 ToolPath 属性被设置为 $(CLToolExe) 和 $(CLToolPath)。

覆盖这些属性也为我成功更改了编译器的路径,因此这些是属性名称是正确的。 在 MSBuild 中覆盖编译器

但是当我尝试在我的自定义目标 exec 类中打印 %(CL.ToolPath) 或 $(CLToolPath) 时,它什么也不打印。 我还查看了 Visual Studio,但找不到它的设置位置。

是否有可以提供 cl.exe 完整路径的变量,或者有什么方法可以在我的自定义目标中打印 CL 任务的属性 ToolPath?

1)如果您已经使用$(CLToolExe)$(CLToolPath)来设置您的新cl.exe ,然后想要获取它的完整路径,您应该使用此$(CLToolPath)$(CLToolExe)来获取新的value 而不是%(CL.ToolPath) (没有这样的方式)。

这是我的测试结果:

实际上,您可以直接在xxx.csporj文件下而不是在Microsoft.CppCommon.Targets文件中覆盖这些属性,当您构建项目时,它将使用新的cl.exe

CLToolExe

然后,我使用自定义目标来获取值:

<Target Name="test123" AfterTargets="ClCompile">
        <Exec Command="$(CLToolPath)$(CLToolExe)" />
        <Message Importance="high" Text="$(CLToolPath)$(CLToolExe)"></Message>
</Target>

在此处输入图片说明

2)如果你没有改成新的值,直接使用默认的cl.exe不做任何改动,应该使用$(ClCompilerPath)来获取默认值。

 <Target Name="test123" AfterTargets="ClCompile">       
       <Message Importance="high" Text="$(ClCompilerPath)"></Message>
 </Target>

在此处输入图片说明

注意$(ClCompilerPath)无法获取$(CLToolPath)$(CLToolExe)的新值,因为它们没有关联,只能获取默认值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM