当前位置: 首页 > ops >正文

Visual Studio中的宏变量

在 Visual Studio 中,有许多内置的宏(也称为生成宏或 MSBuild 属性),这些宏可以在项目配置、文件路径、自定义生成步骤等场景中使用。以下是 Visual Studio 中最常用的内置宏及其用途:

核心项目宏

宏名描述示例值
$(SolutionDir)解决方案目录(以反斜杠结尾)C:\Projects\MyApp\
$(ProjectDir)项目目录(以反斜杠结尾)C:\Projects\MyApp\MyProject\
$(Configuration)当前配置名称(Debug/Release)Debug
$(Platform)当前平台名称(x86/x64)x64
$(TargetName)输出文件名称(不含扩展名)MyApp
$(TargetExt)输出文件扩展名.exe
$(TargetFileName)完整输出文件名MyApp.exe
$(TargetPath)输出文件的完整路径C:\Projects\MyApp\bin\Debug\MyApp.exe

目录路径宏

宏名描述示例值
$(OutDir)输出文件目录(以反斜杠结尾)bin\Debug\
$(IntDir)中间文件目录(以反斜杠结尾)obj\Debug\
$(SolutionPath)解决方案文件的完整路径C:\Projects\MyApp\MyApp.sln
$(ProjectPath)项目文件的完整路径C:\Projects\MyApp\MyProject.csproj

开发环境宏

宏名描述示例值
$(DevEnvDir)Visual Studio 安装目录C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\
$(VCInstallDir)VC++ 工具集目录C:\Program Files\Microsoft Visual Studio\2022\Community\VC\
$(WindowsSdkDir)Windows SDK 目录C:\Program Files (x86)\Windows Kits\10\
$(FrameworkDir).NET Framework 目录C:\Windows\Microsoft.NET\Framework\
$(FrameworkVersion).NET Framework 版本v4.8

高级宏

宏名描述
$(MSBuildProjectDirectory)包含项目文件的目录
$(MSBuildProjectName)项目文件名(不含扩展名)
$(MSBuildThisFileDirectory)当前处理的文件所在目录
$(MSBuildThisFileFullPath)当前处理的文件完整路径
$(MSBuildBinPath)MSBuild 二进制文件目录
$(MSBuildToolsVersion)MSBuild 工具版本号(如 17.0)

特殊用途宏

宏名描述
$(SolutionFileName)解决方案文件名(带扩展名)
$(ProjectFileName)项目文件名(带扩展名)
$(RemoteMachine)远程调试机器设置
$(WebDeployPath)Web 部署路径
$(AssemblySearchPaths)程序集搜索路径列表

使用示例

  1. 在项目属性中配置输出目录

    $(SolutionDir)bin\$(Platform)\$(Configuration)\
    
  2. 在附加包含目录中使用

    $(SolutionDir)include;$(WindowsSdkDir)include
    
  3. 在生成后事件中使用

    copy "$(TargetPath)" "D:\Backup\$(TargetFileName)"
    
  4. 在调试命令参数中使用

    -config "$(ProjectDir)config.json"
    

查看所有宏的方法

  1. 通过项目属性查看

    • 打开项目属性 → C/C++ → 命令行
    • 点击右下角"宏"按钮查看完整列表和当前值
  2. 在预生成/生成后事件中查看

    echo SolutionDir = $(SolutionDir)
    echo ProjectDir = $(ProjectDir)
    echo Configuration = $(Configuration)
    pause
    
  3. 使用 MSBuild 命令查看

    msbuild /pp:temp.xml MyProject.vcxproj
    

    然后在生成的 temp.xml 文件中搜索 PropertyGroup

重要提示

  1. 宏名不区分大小写$(SolutionDir)$(SOLUTIONDIR) 相同)
  2. 宏的值会根据当前配置(Debug/Release)和平台(x86/x64)自动变化
  3. 在路径中使用宏时,建议加上引号:
    "$(SolutionDir)ThirdParty\libs"
    
  4. 可以创建自定义宏:项目属性 → 配置属性 → 常规 → 宏定义

这些宏在配置项目路径、设置编译选项、自定义生成步骤等方面非常有用,能够使项目配置更加灵活和可移植。

http://www.xdnf.cn/news/9841.html

相关文章:

  • (ICML-2025) RIFLEx:视频扩散Transformer中长度外推的“免费午餐”
  • NVIDIA英伟达AI图片视频内容描述总结软件describe-anything整合包
  • 十二、FTP服务器配置与应用
  • 【博客系统】博客系统第十一弹:从零开始在 Linux 系统上搭建 Java 部署环境并部署 Web 项目
  • 扫地机产品异物进入吸尘口堵塞异常检测方案
  • 软考-系统架构设计师-第十六章 层次式架构设计理论与实践
  • Dif-Fusion:第一个基于扩散模型实现的红外光与可见光图像融合的论文
  • 【Linux系统移植】Cortex-A8 Linux系统移植(超详细)
  • [250529] CrateDB 5.10.7 发布:一系列重要修复与升级注意事项
  • 实战指南:步进电机规格书参数解析——以28BYJ48为例(不聊原理,只讲应用)
  • 【HarmonyOS 5】UIAbility上下文切换途中造成的Toast提示展示错窗口的解决方案
  • PyTorch中 torch.utils.data.DataLoader 的详细解析和读取点云数据示例
  • 机动车结构化检测算法AI智能分析网关V4打造全场景应用解决方案
  • 从数据持久化到网络通信与OpenCV:Qt应用程序开发的深度探索与实战
  • 从 API 调用到智能 Agent:面向未来产品的插件化 AI 中台设计
  • Android bindservice绑定服务,并同步返回service对象的两个方法
  • 易经六十四卦象解释数据集分享!智能体知识库收集~
  • PostgreSQL 修改表结构卡住不动
  • MySQL索引与事务
  • 华为防火墙NAPT配置
  • 大模型是什么?
  • 金额高精度计算-BigDecimal
  • CSformer:结合通道独立性和混合的稳健多变量时间序列预测
  • 【QQ音乐】sign签名| data参数加密 | AES-GCM加密 | webpack (下)
  • 理解教材意图轻松积累常见数列
  • 外贸邮件营销推广怎么做才有效果?
  • 浏览器本地存储
  • 计算机图形学:(六)渲染管线
  • java24
  • 信创改造选择C86,相比于ARM架构有什么优势?