VScode调用MSVC编译C++文件
各路大神尝试解决:https://stackoverflow.com/a/78146896/19986873
批处理.bat
@echo off chcp 65001 if not "%~1"=="" (set pos="%~1" & goto run) set /p pos=工程路径Workspace path: :run call "E:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" code %pos%
新建文本,然后保存成vscode_MSVC.bat
可以将工程文件夹
直接拖到图标上,无需双击打开。这归功于第3行代码。
记得替换你的VsDevCmd.bat
绝对路径,这东西主要修改了环境变量,以提供给code。
安利:可用Everything快速搜索VsDevCmd.bat
增强版:记忆上次路径
@echo off chcp 65001 if not "%~1"=="" (set pos="%~1" & goto init) for /f %%i in (%~f0) do (set last=%%i) echo 留空、直接回车以使用上次路径: %last% set /p pos=工程路径Workspace: if "%pos%"=="" (set pos=%last% & goto run) :init echo=>>%~f0 & set /p="%pos%"<nul>>%~f0 :run call "E:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" code %pos%
会将最近打开的路径,回写到自己,所以注意定期清理批处理内的文本
编写过程遇到了坑,记录下
仅当从 VS 开发人员命令提示符处运行 VS Code 时,cl.exe 生成和调试才可用。
https://blog.csdn.net/lichen849/article/details/109626205
call vs start
https://stackoverflow.com/questions/13257571/call-command-vs-start-with-wait-option
对于exe文件,我认为差异几乎无关紧要。
但是要启动 exe,您甚至不需要 .CALL当启动另一个批处理时,这是一个很大的区别,因为将在同一窗口中启动它,
并且被调用的批处理可以访问相同的变量上下文。
因此,它还可以更改影响调用方的变量。CALLSTART将为被调用的批处理创建一个新cmd.exe,如果没有 /b,它将打开一个新窗口。
由于这是一个新上下文,因此无法共享变量。
也不能使用setlocal enabledelayedexpansion
,因为VsDevCmd.bat
在code启动之前修改了一些环境变量
https://blog.csdn.net/csqxy547/article/details/89856034
无法在启动code后关闭cmd
似乎从命令行启动code,code会返回一个新的cmd实例,没法自动退出,只能自己关掉。
https://code.visualstudio.com/docs/editor/command-line#_how-do-i-detect-when-a-shell-was-launched-by-vs-code
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2023-03-12 pdf无障碍化,为纯图片pdf识别文字并隐式上字(方便搜索且不影响原图片),pdf转pdf/A,转可编辑式pdf