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

yizhihongxing

详解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技术站

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

相关文章

  • C语言 动态内存分配的详解及实例

    C语言 动态内存分配的详解及示例 什么是动态内存分配 在编程中,有时我们需要根据实际情况动态地分配内存空间,而不是在编写时就预先分配好。这种内存分配方式被称为动态内存分配。动态内存分配可以避免预分配内存的浪费,同时还可以根据需要扩充内存。 C语言中提供了四个用于动态内存分配的库函数,分别是 malloc、calloc、realloc 和 free。 mall…

    C 2023年5月23日
    00
  • C语言小项目计时器的实现思路(倒计时+报警提示)

    C语言小项目计时器的实现思路(倒计时+报警提示) 思路概括 计时器的实现思路可以分为三个部分: 用户输入倒计时的时间,程序将其保存下来。 程序不断地循环检查当前时间与开始时间之间的差值是否大于等于用户设定的时间,当差值达到要求时,触发报警提示。 用户可以选择中途取消倒计时。 具体实现 1. 用户输入倒计时的时间 用户需输入倒计时的时间,可以通过scanf函数…

    C 2023年5月23日
    00
  • 浅析json与jsonp区别及通过ajax获得json数据后格式的转换

    下面就详细讲解一下关于“浅析json与jsonp区别及通过ajax获得json数据后格式的转换”的攻略。 一、JSON与JSONP的区别 1. JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,这种文本格式很容易被人类阅读和编写,同时也很容易被机器解析和生成。在现代web应用中…

    C 2023年5月23日
    00
  • C++详解如何通过模板实现元素的反序

    当我们需要对一组数据进行反序操作时,可以通过模板来实现。下面就详细说明如何通过模板实现元素的反序操作: 1. 利用模板实现反序函数 我们可以通过模板函数将需要反序的数组作为参数传递进去,然后在函数中进行元素反转操作,最后返回反序后的数组。下面是一段通过模板实现反序函数的代码示例: template<typename T> void Reverse…

    C 2023年5月23日
    00
  • C语言实现密码程序

    实现密码程序可以采用C语言编程,下面是实现密码程序的详细攻略: 步骤一:设计密码 首先需要确定你想要设计的密码类型和密码长度。一般来说,密码类型有数字、字母和符号,长度越长越安全。在编写程序之前,你需要确定一个密码并将其记录下来。 步骤二:编写代码 引入头文件和变量设置 首先引入stdio.h头文件,定义变量password、user_password和co…

    C 2023年5月23日
    00
  • C语言实现直方图均衡化

    下面是“C语言实现直方图均衡化”的完整攻略: 1.什么是直方图均衡化? 直方图均衡化是一种针对图像处理和计算机视觉中的技术,其主要目的是提高图像对比度和亮度的可读性。它的基本思想是使像素值分布更加均匀,从而达到增强图像对比度和亮度的效果。 2.实现步骤 计算图像的直方图。 直方图是指图像中每个像素值出现的次数。首先需要将图像转换为灰度图像,然后统计每个像素值…

    C 2023年5月23日
    00
  • C++中求组合数的各种方法总结详解

    C++中求组合数的各种方法总结详解 前言 组合数问题在许多算法问题中都有广泛应用,在C++中求组合数的方法也多种多样。本文将总结并详细解释C++中求组合数的各种方法。 直接递推法 组合数的定义式为:$C_{n}^{m}=\frac{n!}{m!(n-m)!}$,可以通过递归的方法直接求解。 递归式为:$C_{n}^{m}=C_{n-1}^{m-1}+C_{n…

    C 2023年5月22日
    00
  • JavaScript数据结构中栈的应用之表达式求值问题详解

    JavaScript数据结构中栈的应用之表达式求值问题详解 背景 在JavaScript中,算术表达式很常见,例如 (2 + 3) * 4 – 8 / 2。对于一个算术表达式,我们需要将它转化为一个数值。要对表达式求值,我们需要确定运算符优先级和结合性。其中,左结合表示从左到右计算,右结合表示从右到左计算。 步骤 我们可以用栈来求一个表达式的值。具体的求值过…

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