gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:59:39 26 4
gpt4 key购买 nike

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

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

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

主.ccp


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

using namespace std;

int main ()
{

speak();

return 0;
}

目录.h


#pragma once



void speak();

猫.ccp


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

using namespace std;

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

}

这个简单的程序在 Codeblocks 和 Visual Studio Community 2017 中构建没问题,我无法弄清楚我需要做什么才能让它运行。底部的这个错误表明 Cat.ccp 文件根本没有被拾取。如果我将此 Cat.ccp 中的定义放入头文件中,程序编译并运行良好,但我需要使用该 .ccp 文件,因为我知道这是分离代码的公认方式。我会注意到所有文件也都在同一个文件夹中。

我知道我可能需要告诉 VS Code 在哪里寻找 Cat.ccp 文件,但我很奇怪它在同一位置找到标题。尽管如此,在网上查看后,我一直在阅读我可能需要将一个目录放入 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
}

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

任务.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",
],

在 launch.json 中:

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

如果你的源在单独的文件夹中,它会起作用

关于c++ - VS Code 不会构建具有多个 .ccp 源文件的 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47665886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com