详解Ubuntu18.04配置VSCode+CMake的C++开发环境

详解Ubuntu18.04配置VSCode+CMake的C++开发环境

本文将会介绍如何在Ubuntu 18.04配置VSCode和CMake的C++开发环境。以下是具体的步骤:

步骤1:安装必要的软件包

打开终端,使用以下命令来安装必要的软件包:

sudo apt-get update
sudo apt-get install build-essential gdb cmake

步骤2:安装VSCode

在Ubuntu 18.04中,您可以使用以下命令来安装VSCode:

sudo snap install --classic code

步骤3:安装C/C++插件

安装完VSCode之后,需要安装C/C++插件,该插件提供了C++开发所需的工具和功能。可以通过以下步骤安装C/C++插件:

  1. 打开VSCode
  2. 点击左侧的Extensions图标,搜索C/C++插件
  3. 点击安装按钮,等待插件安装完成

步骤4:安装CMake插件

在VSCode内安装CMake插件,该插件提供CMake语法高亮、调试和构建支持。您可以通过以下步骤安装CMake插件:

  1. 打开VSCode
  2. 点击左侧的Extensions图标,搜索CMake Tools插件
  3. 点击安装按钮,等待插件安装完成

步骤5:创建C++项目

您现在可以在VSCode内创建C++项目了。您可以通过以下步骤创建一个简单的C++项目:

  1. 打开VSCode
  2. 点击File->Open Folder
  3. 选择一个文件夹来存储您的C++项目
  4. 点击左侧的Explorer图标,右键单击文件夹并选择“New File”
  5. 输入“main.cpp”作为文件名,并输入以下内容:
#include <iostream>

int main(){
    std::cout << "Hello World!" << std::endl;
    return 0;
}

步骤6:配置CMake

接下来需要在项目文件夹中创建一个CMakeLists.txt文件来配置CMake。在文件夹中右键单击并选择“New File”。输入“CMakeLists.txt”作为文件名,并输入以下内容:

cmake_minimum_required (VERSION 3.5)

project (hello_world)

add_executable (hello_world main.cpp)

这告诉CMake创建一个名为“hello_world”的可执行文件,并将“main.cpp”文件添加到该可执行文件中。

步骤7:使用CMake生成Makefile

在终端中打开项目文件夹,并键入以下命令:

mkdir build && cd build
cmake ..

这将在build文件夹中生成Makefile文件。

步骤8:编译代码

在终端中,键入以下命令来编译代码:

make

步骤9:调试代码

在VSCode中,可以通过以下 steps 来调试C++代码:

  1. 点击左侧的Debug图标
  2. 点击左上角的“create a launch.json file”链接
  3. 选择C++作为环境
  4. 在配置文件中添加以下代码:
{
    "name": "g++ - Build and debug active file",
    "type": "cppdbg",
    "request": "launch",
    "program": "${workspaceRoot}/build/hello_world",
    "args": [],
    "stopAtEntry": false,
    "cwd": "${workspaceRoot}",
    "environment": [],
    "externalConsole": false,
    "MIMode": "gdb",
    "miDebuggerPath": "gdb"
}
  1. 现在,您可以点击左侧的Debug按钮来开始调试您的代码。

示例1:在Ubuntu 18.04下使用VSCode+CMake开发C++程序

以下是一个简单的示例,演示了如何在Ubuntu 18.04下使用VSCode+CMake开发和调试C++程序。

  1. 创建名为“hello_world”的文件夹。
  2. 在文件夹内创建一个名为“main.cpp”的文件,添加以下内容:
#include <iostream>

int main(){
    std::cout << "Hello World!" << std::endl;
    return 0;
}
  1. 在文件夹内创建一个CMakeLists.txt文件,并添加以下内容:
cmake_minimum_required (VERSION 3.5)

project (hello_world)

add_executable (hello_world main.cpp)
  1. 打开终端,进入该文件夹并输入以下命令:
mkdir build && cd build
cmake ..
make
  1. 点击左侧的Debug按钮来开始调试您的代码,并输入以下代码:
#include <iostream>

int main(){
    int i = 0;
    while(true){
        std::cout << "Hello World!" << std::endl;
        i++;
        if(i > 10){
            break;
        }
    }
    return 0;
}
  1. 完成后,您可以看到程序在控制台中输出“Hello World!”10次。

示例2:在Ubuntu 18.04下使用VSCode+CMake开发OpenGL程序

以下是一个简单的示例,演示了如何在Ubuntu 18.04下使用VSCode+CMake开发和调试OpenGL程序。

  1. 安装OpenGL和GLFW:
sudo apt-get install libgl1-mesa-dev libglfw3-dev
  1. 创建名为“opengl”的文件夹。
  2. 在文件夹内创建一个名为“main.cpp”的文件,添加以下内容:
#include <iostream>
#include <GLFW/glfw3.h>

int main(){
    if (!glfwInit()){
        std::cout << "Failed to initialize GLFW\n" << std::endl;
        return -1;
    }

    GLFWwindow* window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window){
        std::cout << "Failed to create GLFW window\n" << std::endl;
        return -1;
    }

    glfwMakeContextCurrent(window);

    while (!glfwWindowShouldClose(window)){
        glClear(GL_COLOR_BUFFER_BIT);

        glBegin(GL_TRIANGLES);
        glVertex2f(-0.5f, -0.5f);
        glVertex2f(0.0f, 0.5f);
        glVertex2f(0.5f, -0.5f);
        glEnd();

        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwTerminate();

    return 0;
}
  1. 在文件夹内创建一个CMakeLists.txt文件,并添加以下内容:
cmake_minimum_required (VERSION 3.5)

project (opengl)

add_executable (opengl main.cpp)

find_package (OpenGL REQUIRED)
target_link_libraries (opengl ${OPENGL_LIBRARY})

find_package (glfw3 3.3 REQUIRED)
target_link_libraries (opengl glfw)
  1. 打开终端,进入该文件夹并输入以下命令:
mkdir build && cd build
cmake ..
make
  1. 点击左侧的Debug按钮来开始调试您的代码,并输入以下代码:
#include <iostream>
#include <GLFW/glfw3.h>

int main(){
    if (!glfwInit()){
        std::cout << "Failed to initialize GLFW\n" << std::endl;
        return -1;
    }

    GLFWwindow* window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window){
        std::cout << "Failed to create GLFW window\n" << std::endl;
        return -1;
    }

    glfwMakeContextCurrent(window);

    while (!glfwWindowShouldClose(window)){
        glClear(GL_COLOR_BUFFER_BIT);

        glBegin(GL_TRIANGLES);
        glVertex2f(-0.5f, -0.5f);
        glVertex2f(0.0f, 0.5f);
        glVertex2f(0.5f, -0.5f);
        glEnd();

        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwTerminate();

    return 0;
}
  1. 在终端中键入以下命令来运行您的OpenGL程序:
./opengl
  1. 当程序开始执行时,您将会看到一个OpenGL窗口显示一个三角形。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Ubuntu18.04配置VSCode+CMake的C++开发环境 - Python技术站

(1)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 基于C++自动化编译工具的使用详解

    基于C++自动化编译工具的使用详解 什么是自动化编译工具 自动化编译工具可以帮助我们简化编译过程,减少手动操作,提高编译效率,节省时间。目前常见的一些自动化编译工具有Makefile、CMake、SCons等。 其中,Makefile是最原始、最传统的自动化编译工具,他是通过规定一系列源文件、头文件、编译参数、依赖关系等,使代码能够被快速编译成可执行文件。 …

    C 2023年5月23日
    00
  • JavaScript中的JSON 中文版翻译

    下面是关于“JavaScript中的JSON 中文版翻译”的完整攻略。 什么是JSON? JSON,全称为JavaScript Object Notation,即JavaScript对象表示法,是一种轻量级的数据传输格式。它以键值对的形式存储数据,非常适合用于Web应用中的数据交互和传输。 JSON数据的基本格式 JSON数据的基本格式是一个键值对,键名必须…

    C 2023年5月23日
    00
  • RedHat linux 8.0下内核编译步骤和说明

    RedHat Linux 8.0下内核编译步骤和说明 前置条件 已安装RedHat Linux 8.0操作系统 具备基本的Linux命令行操作技巧 下载Linux内核源码包 步骤说明 步骤1:解压源码包 将下载的Linux内核源码包解压到任意位置,例如/home/username/kernel。 步骤2:配置内核 进入源码目录,使用以下命令进行配置: mak…

    C 2023年5月22日
    00
  • 深入解析最长公共子串

    深入解析最长公共子串 什么是最长公共子串 最长公共子串(Longest Common Substring)是指两个或多个字符串中最长的子串,它可以用来比较两个字符串的相似程度。 例如,对于字符串 “abcdefg” 和 “defghij”,它们的最长公共子串为 “defg”,长度为 4。即 “abcdefg” 中的 “defg” 与 “defghij” 中的…

    C 2023年5月22日
    00
  • win10专业版提示更新错误0xC1900101怎么办 0xC1900101错误提示大全

    win10专业版提示更新错误0xC1900101怎么办 如果你正在使用win10专业版并且在更新系统时遇到了错误0xC1900101,那么以下几个方案可能对你有帮助: 方案一:检查硬件兼容性 在开始进行更新之前,请先确认你的设备硬件是否符合win10系统的要求。你可以通过访问微软的设备兼容性中心来检查是否存在不兼容的硬件或软件。 如果你在更新之前没有进行检查…

    C 2023年5月23日
    00
  • 如何判断一个整数的二进制中有多少个1

    要判断一个整数的二进制中有多少个1,可以采用以下两种方法: 方法一:遍历每一位对于二进制数字,可以通过不断取模和除法,得到每一位的数字,然后判断当前位是否为1。具体步骤如下: 定义一个计数器counts,用于记录1的个数 对于整数num,不断进行模2运算,得到二进制数中当前位的数字,记为temp 如果temp为1,则counts加1 对num进行除2运算,向…

    C 2023年5月23日
    00
  • C语言 以字符形式读写文件详解及示例代码

    C语言 以字符形式读写文件详解及示例代码 文件操作是C语言中必不可少的一部分,在我们的编程过程中,常常需要读取文件或将数据写入文件,本文将详细讲解以字符形式读写文件的方法及示例代码。 文件输入输出流 在C语言中,对文件的输入输出操作都是通过文件流(file stream)实现的。文件流是一种数据流,它代表了一个文件,通过文件流,我们可以将数据从文件中读取,也…

    C 2023年5月24日
    00
  • C++实现线程池的简单方法示例

    关于”C++实现线程池的简单方法示例”,我们可以以下步骤进行: 步骤1:了解线程池的概念 线程池是一种多线程处理形式,为了避免反复地创建和销毁线程带来的系统开销,为了使线程能够得到复用,提高代码的效率和稳定性。线程池所要做的工作就是控制线程的数量、保证任务的异步执行和线程安全。 步骤2:实现线程池 在实现线程池时,需要考虑以下几个方面: 2.1 任务队列 线…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部