VS Code 不会构建具有多个 .cpp 源文件的 C++ 程序

2024-04-28

请注意,我在 Ubuntu 17.10 上使用 VS Code 并使用 GCC 编译器。

我在构建一个使用附加 .cpp 文件的简单程序时遇到问题。我可能在这里遗漏了一些明显的东西,因为我对编程相当陌生,但我会解释到目前为止我所做的事情。这阻止了我继续我正在做的教程。

我编写了一个非常简单的程序来证明我的观点,如下所示。

main.cpp


#include <iostream>
#include "Cat.h"

using namespace std;

int main ()
{

speak();

return 0;
}

Cat.h


#pragma once



void speak();

Cat.cpp


#include <iostream>
#include "Cat.h"

using namespace std;

void speak()
{
std::cout << "Meow!!" << std::endl;

}

这个简单的程序在 Codeblocks 和 Visual Studio Community 2017 中构建都没有问题,但我不知道需要做什么才能使其运行。 底部的此错误表明 Cat.cpp 文件根本没有被拾取。如果我要将 Cat.cpp 中的定义放入头文件中,则程序可以编译并正常运行,但我需要使用该 .cpp 文件,因为我知道这是分离代码的可接受的方式。我会注意到所有文件也都在同一个文件夹中。

我知道我可能需要告诉 VS Code 在哪里查找 Cat.cpp 文件,但对我来说很奇怪的是它在同一位置找到标头。尽管如此,在网上查看后,我一直在阅读,我可能需要将一个目录放入 c_cpp_intellisense_properties.json 中。这是我的样子。

{
"configurations": [
    {
        "name": "Mac",
        "includePath": [
            "/usr/include",
            "/usr/local/include",
            "${workspaceRoot}"
        ],
        "defines": [],
        "intelliSenseMode": "clang-x64",
        "browse": {
            "path": [
                "/usr/include",
                "/usr/local/include",
                "${workspaceRoot}"
            ],
            "limitSymbolsToIncludedHeaders": true,
            "databaseFilename": ""
        },
        "macFrameworkPath": [
            "/System/Library/Frameworks",
            "/Library/Frameworks"
        ]
    },
    {
        "name": "Linux",
        "includePath": [
            "/usr/include/c++/7",
            "/usr/include/x86_64-linux-gnu/c++/7",
            "/usr/include/c++/7/backward",
            "/usr/lib/gcc/x86_64-linux-gnu/7/include",
            "/usr/local/include",
            "/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed",
            "/usr/include/x86_64-linux-gnu",
            "/usr/include",
            "/home/danny/Documents/C++_Projects/24_-_Classes/Cat.cpp",
            "${workspaceRoot}",
            "/home/danny/Documents/C++_Projects/24_-_Classes/",
            "/home/danny/Documents/C++_Projects/24_-_Classes/.vscode",
            "/home/danny/Documents/C++_Projects/24_-_Classes/.vscode/Cat.cpp"
        ],
        "defines": [],
        "intelliSenseMode": "clang-x64",
        "browse": {
            "path": [
                "/usr/include/c++/7",
                "/usr/include/x86_64-linux-gnu/c++/7",
                "/usr/include/c++/7/backward",
                "/usr/lib/gcc/x86_64-linux-gnu/7/include",
                "/usr/local/include",
                "/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed",
                "/usr/include/x86_64-linux-gnu",
                "/usr/include",
                "${workspaceRoot}",
                "/home/danny/Documents/C++_Projects/24_-_Classes/",
                "/home/danny/Documents/C++_Projects/24_-_Classes/.vscode/Cat.cpp"
            ],
            "limitSymbolsToIncludedHeaders": true,
            "databaseFilename": ""
        }
    },
    {
        "name": "Win32",
        "includePath": [
            "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include",
            "${workspaceRoot}"
        ],
        "defines": [
            "_DEBUG",
            "UNICODE"
        ],
        "intelliSenseMode": "msvc-x64",
        "browse": {
            "path": [
                "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include/*",
                "${workspaceRoot}"
            ],
            "limitSymbolsToIncludedHeaders": true,
            "databaseFilename": ""
        }
    }
],
"version": 3
}

有一次我想知道是否需要在其中添加一个双命令来告诉编译器在任务.json但我还没有弄清楚如何做到这一点,或者即使这是正确的方法。

任务.json


{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
    {
        "label": "Build",
        "type": "shell",
        "command": "g++ -g /home/danny/Documents/C++_Projects/24_-_Classes/main.cpp -o Classes",
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "problemMatcher":"$gcc"
    }
]
}

感谢任何帮助。以防万一您想知道,我不只是在 Codeblocks 或 VS Community 中完成教程的原因是我想知道大多数事情的幕后情况。另外,我想让 VS Code 为我工作,因为到目前为止它非常棒。


在tasks.json中:

        "label": "g++.exe build active file",
        "args": [
            "-g",
            "${fileDirname}\\**.cpp",
            //"${fileDirname}\\**.h",
            "-o",
            "${fileDirname}\\${fileBasenameNoExtension}.exe",
        ],

在启动.json中:

"preLaunchTask": "g++.exe build active file"

如果您的源位于单独的文件夹中,它将起作用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS Code 不会构建具有多个 .cpp 源文件的 C++ 程序 的相关文章

随机推荐