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

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. 可以创建自定义宏:项目属性 → 配置属性 → 常规 → 宏定义

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

相关文章:

  • Python打卡训练营day40——2025.05.30
  • 每日算法 -【Swift 算法】将整数转换为罗马数字
  • JS手写代码篇---手写节流函数
  • allWebPlugin中间件VLC专用版之截图功能介绍
  • 评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
  • 历年西安交通大学计算机保研上机真题
  • 异步并发控制代码详细分析
  • WEB3——什么是ABI
  • 《TCP/IP 详解 卷1:协议》第2章:Internet 地址结构
  • <PLC><socket><西门子>基于西门子S7-1200PLC,实现手机与PLC通讯(通过websocket转接)
  • 云原生微服务架构演进之路:理念、挑战与实践
  • 小型图书管理系统案例(用于spring mvc 实践)
  • MicroPython+L298N+ESP32控制电机转速
  • Wi-Fi 切换 5G 的时机
  • 公链地址生成曲线和算法
  • 【NLP入门系列一】NLP概述和独热编码
  • c/c++的opencv霍夫变换
  • LLM 使用 MCP 协议及其原理详解
  • Glide NoResultEncoderAvailableException异常解决
  • 安装启动Mosquitto以及问题error: cjson/cJSON.h: No such file or directory解决
  • 德州手机网站建设/网络运营和网络营销的区别
  • 国内大的网站建设公司排名/在线网络培训平台
  • xampp可以做网站吗/百度一下官网首页
  • 网站被301跳转/山东网络优化公司排名
  • 中卫市建设网站/甘肃seo技术
  • 国外画册设计欣赏网站/360搜索推广