如果无法创建 vcxproj 文件,是不是可以将 MSBuild 用作带有 Visual Studio 代码的 C++ 编译器?
Posted
技术标签:
【中文标题】如果无法创建 vcxproj 文件,是不是可以将 MSBuild 用作带有 Visual Studio 代码的 C++ 编译器?【英文标题】:Could I use MSBuild as C++ compiler with Visual Studio code if I can't create the vcxproj file?如果无法创建 vcxproj 文件,是否可以将 MSBuild 用作带有 Visual Studio 代码的 C++ 编译器? 【发布时间】:2019-01-01 16:21:25 【问题描述】:我的最终目标是能够使用 Visual Studio Code 编写和运行简单的 C++ 程序。我已经在我的机器上安装了 Visual Studio Code 和 MSBuild (Visual Studio Build Tools 2017)。 我的机器上没有安装 Visual Studio IDE。所以,我没有简单的方法为我编写的代码创建 *.vcproj 和 *.sln。
所以,这就是我要做的:我编写了一个简单的 C++ 程序并将文件保存为 test.cpp。然后,甚至在 VS 代码中创建构建任务之前,我想验证 MSBuild 是否有效。所以,我运行了以下命令。
msbuild.exe /t:ClCompile /p:SelectedFiles="test.cpp"
并返回以下错误:
error MSB1003: Specify a project or solution file. The current working
directory does not contain a project or solution file.
是否可以使用 MSBuild 编译单个 C++ 文件?
参考:Using MSBuild to compile a single cpp file - 此页面建议我应该能够运行 MSBuild 来编译自 VS 2010 以来的单个 C++ 文件。
【问题讨论】:
您可以使用CMake
生成一个项目文件,给定一个非常简单/基本的CMakeLists.txt
。虽然我质疑你为什么首先需要/想要使用 msbuild。
好的,我会试试的。谢谢。我还能用什么来代替 msbuild?我只想要一个 Windows 上的 C++ 编译器,并且可以与 vs 代码一起使用。抱歉,如果这听起来太天真了,但我可以在 Windows 上使用 gcc 吗?
microsoft c++
编译器是 cl.exe
msbuild.exe 用于构建项目或解决方案。
是否可以在我的机器上只安装 cl.exe 而无需安装 msbuild?
是的,这已经被问过/回答过。有多种方法可以做到这一点,基本上是设置 task.json (请参阅链接的重复问题以了解一种可能的编写方式)并确保编译器可用(例如,请参阅***.com/questions/47115546/…,它有最简单的答案:首先运行为构建工具设置环境变量等的批处理文件,然后启动 VSCode 以便它可以调用 cl.exe 等)
【参考方案1】:
您需要更仔细地阅读您链接到的页面。 MSBuild 需要一个项目文件(或引用一个或多个项目文件的解决方案文件)来执行任何操作,而该文件又由 IDE 创建。
【讨论】:
【参考方案2】:我相信您正在寻找的是CL
(编译器)而不是MSBuild
(项目工具,...)。
我写了一个page 并附上我的 vscode 和 c++ 笔记。在那里你也可以得到调试任务。
这些是我用于构建单个文件的任务:
"label": "MSVC C++03",
"type": "shell",
"command": "cl.exe",
"args": [
"/EHsc",
"/FC",
"/Od",
"/permissive-",
"/W4",
"/Z7",
"/Fdout/$fileBasenameNoExtension.pdb",
"/Feout/$fileBasenameNoExtension.exe",
"/Foout/$fileBasenameNoExtension.obj",
"$fileBasename",
],
"group": "build",
"presentation":
"reveal":"always"
,
"problemMatcher": "$msCompile"
,
"label": "MSVC C++17",
"type": "shell",
"command": "cl.exe",
"args": [
"/EHsc",
"/FC",
"/Od",
"/permissive-",
"/std:c++17",
"/W4",
"/Z7",
"/Fdout/$fileBasenameNoExtension.pdb",
"/Feout/$fileBasenameNoExtension.exe",
"/Foout/$fileBasenameNoExtension.obj",
"$fileBasename"
],
"group": "build",
"presentation":
"reveal":"always"
,
"problemMatcher": "$msCompile"
【讨论】:
以上是关于如果无法创建 vcxproj 文件,是不是可以将 MSBuild 用作带有 Visual Studio 代码的 C++ 编译器?的主要内容,如果未能解决你的问题,请参考以下文章
将 CMake.txt 转换为 .vcxproj 文件 C++ Visual Studio 项目
Visual Studio 从 vcxproj 文件中删除 props 文件定义