Win32 通过命令行编译项目(devenv.com)

举报
福州司马懿 发表于 2022/11/24 11:31:32 2022/11/24
【摘要】 简介Vistual Studio工具实际上是 devenv.exe,而它在编译项目时,输出对话框里输出的实际上就是在命令行中调用devenv.com程序的输出结果因此,如果想用命令行进行自动编译,我们可以直接使用devenv.exe或devenv.com,它们的区别是一个有输出,一个没输出devenv.exe 不输出任何信息devenv.com 输出生成过程信息devenv 的第一个参数通...

简介

Vistual Studio工具实际上是 devenv.exe,而它在编译项目时,输出对话框里输出的实际上就是在命令行中调用devenv.com程序的输出结果

因此,如果想用命令行进行自动编译,我们可以直接使用devenv.exedevenv.com,它们的区别是一个有输出,一个没输出

  • devenv.exe 不输出任何信息
  • devenv.com 输出生成过程信息

devenv 的第一个参数通常是一个解决方案文件或项目文件。如果您希望在编辑器中自动打开文件,也可以使用任何其他文件作为第一个参数。当您输入项目文件时,IDE会在项目文件的父目录中查找与该项目文件具有相同基名称的 .sln 文件。如果不存在这样的 .sln 文件,IDE 将查找引用该项目的单个 .sln 文件。如果不存在这样的单个.sln 文件,则 IDE 将创建一个具有默认 .sln 文件名且未保存的解决方案,其基名称与项目文件的基名称相同

devenv路径

找到 Vistual Studio 右击选择属性
图片.png

可以看到,该快捷方式的目标就指向了devenv.exe,而其起始位置也就是存放 devenv 的文件目录
图片.png

点击“打开文件所在的位置(F)”按钮,可以看到这几个都是 devenv 的相关文件。默认的文件路径在 C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE

图片.png

用法

基本命令

对命令参数大小写不敏感,例如 /build 也可以写作 /BUILD

devenv.com  [solutionfile | projectfile |anyfile.ext]  [switches]
devenv.com solutionfile.sln /build [ solutionconfig ] [ /project projectnameorfile [ /projectconfig name ] ]

可用的命令行开关:

参数 作用
/Build 使用指定的解决方案配置生成解决方案或项目。例如“Debug”。如果可能存在多个平台,则配置名称必须用引号括起来并且包含平台名称。例如“Debug
/Clean 删除生成结果。
/Command 启动 IDE 并执行该命令。
/Deploy 生成并部署指定的生成配置。
/Edit 在此应用程序的运行实例中打开指定文件。如果没有正在运行的实例,则启动一个具有简化窗口布局的新实例。
/LCID 设置 IDE 中用于用户界面的默认语言。
/Log 将 IDE 活动记录到指定的文件以用于故障排除。
/NoVSIP 禁用用于 VSIP 测试的 VSIP 开发人员许可证密钥。
/Out 将生成日志追加到指定的文件中。
/Project 指定生成、清理或部署的项目。必须和 /Build、/Rebuild、/Clean 或 /Deploy 一起使用。
/ProjectConfig 重写解决方案配置中指定的项目配置。例如“Debug”。如果可能存在多个平台,则配置名称必须用引号括起来并包含平台名称。例如“Debug
/Rebuild 先清理,然后使用指定配置生成解决方案或项目。
/ResetAddin 移除与特定外接程序关联的命令和命令用户界面。
/ResetSettings 恢复 IDE 的默认设置,还可以重置为指定的 VSSettings 文件。
/ResetSkipPkgs 清除所有添加到 VSPackages 的 SkipLoading 标记。
/Run 编译并运行指定的解决方案。
/RunExit 编译并运行指定的解决方案然后关闭 IDE。
/SafeMode 以安全模式启动 IDE,加载最少数量的窗口。
/Upgrade 升级项目或解决方案以及其中的所有项目。并相应地创建这些文件的备份。有关备份过程的更多信息,请参见“Visual Studio 转换向导”上的帮助。

产品特定的开关:

参数 作用
/debugexe 打开要调试的指定可执行文件。命令行的其余部分作为它的参数传递到此执行文件。
/useenv 使用 PATH、INCLUDE、LIBPATH和 LIB 环境变量而不是使用 VC++ 生成的 IDE 路径。

从命令行附加调试器:

VsJITDebugger.exe -p <pid>

注意

  • 如果在sln里面设置了dependence,一旦Clear某个Project,会导致其他相依赖的Project也会被Clear,造成编译时间上的浪费,为了节省时间,你可以重命名sln或者删除sln,这样编译就不会考虑工程间依赖关系
  • 编译的工程版本必须和VS版本对应,否则会提示该项目没有被转换

实战

假设我们创建了一个解决方案,名字叫ShapedWindow。解决方案中有好几个项目,其中一个项目名为test

devenv.exe

编译的过程中,无任何输出,也不输出结果

编译解决方案中的某个项目

"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe" ShapedWindow.sln /BUILD "Release|x64" /PROJECT test

清理解决方案中的某个项目

"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe" ShapedWindow.sln /CLEAN "Release|x64" /PROJECT test

图片.png

编译整个解决方案

"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe" ShapedWindow.sln /BUILD "Release|x64"

清理整个解决方案

"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe" ShapedWindow.sln /CLEAN "Release|x64"

图片.png

devenv.com

编译的同时,会输出过程信息和结果

编译解决方案中的某个项目

"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.com" ShapedWindow.sln /BUILD "Release|x64" /PROJECT test

图片.png

清理解决方案中的某个项目

"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.com" ShapedWindow.sln /CLEAN "Release|x64" /PROJECT test

图片.png

编译整个解决方案

"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.com" ShapedWindow.sln /BUILD "Release|x64"

图片.png

清理整个解决方案

"C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.com" ShapedWindow.sln /CLEAN "Release|x64"

图片.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。