如果无法创建 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++ 编译器?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 vcxproj.filters 文件存在?

Visual Studio 2017 无法打开现有文件

将 CMake.txt 转换为 .vcxproj 文件 C++ Visual Studio 项目

Visual Studio 从 vcxproj 文件中删除 props 文件定义

在 qmake 生成的 .vcxproj 中导入 .props 文件

如何从命令提示符创建 C++ 项目? [关闭]