linux系统下vscode portable版本的c++/Cmake环境搭建001

linux系统下vscode portable版本的Cmake环境搭建

前言

  • 目的:希望在获得一个新的系统之后,以最简便的方式搭配一个能够运行与调试c++的编程环境
  • 做这个系列原因也很简单,我之前的配置如下:
  • A电脑 :我的A电脑本机安装的是windows系统,然后在此电脑上又安装了Kubuntu的U盘系统(就是拿一个移动硬盘作为系统安装盘),然后通过磁盘按扇区克隆的方式又克隆了几个备份的磁盘,这样即使一个磁盘坏掉,我仍然有其他系统作为备份使用。
  • B移动硬盘 :有几个文件夹,文件主要按照文件的应用类型进行分类存储,我把自己的关键代码等遗迹重要的数据以文本格式进行存储,并进行了多个版本的备份,但是其他二级重要的数据散乱的存储在多个文件夹,其中C文件夹保存着我的历史代码、系统镜像、软件安装包(其中包括磁盘恢复软件)等
  • B-1,B-2,B-3,SSK移动硬盘:均为B移动硬盘的复制,但是因为后续使用过程中写入了不同的代码,又因为个人没有及时进行同步(硬盘躲起来手动同步真的好麻烦),所以进行了分化,B-2和B-3用于了不同了任务。SSK中为最新数据,B-1为近期数据但是没有SSK近。
  • 但是前两天B移动硬盘C文件夹突然打不开了,我马上进行了数据恢复,但是由于没有用于存储恢复数据的空间,出于物理结构的考虑,准备将SSK作为从软件中恢复得到数据的接收盘,所以我将SSK的数据移动到了B-1,然后将数据移动到了SSK。然后,我准备给文件夹坏掉的那个移动硬盘装一个kali linux系统,结果安装过程中出现了错误(我选错了安装盘,安装时没有检测出B移动硬盘),把电脑本机的windows系统覆盖了(这个window系统上没有重要的数据),上边的linux引导好像也坏掉了,然后我的B-1,B-2,B-3等这些系统都没办法用了(我也进行了恢复,尝试了各种方法,最后只能恢复到安全模式下的命令行界面),这让我有点无奈(好在数据都还在,但是系统没了)。另一件事情是因为坏掉的那个盘的数据有几百G,我只选择了部分数据转移到SSK中,最重要的肯定是转移过去了,但是其他次要的不知道是否转移完全了。
  • 所以在本系列中,我打算这样安排我的系统
  • 只使用live系统:插上U盘就进入系统安装界面,然后选择试用,也有一些linux系统提供了live镜像(我也找到了做USB系统且能持久化的相关教程,但先准备不去尝试)
  • 将开发软件以安装文件+命令行配置的方式进行存储,在需要编程时进行即时安装,一般来说,这样就可以在任何电脑上,任何系统上快速运行自己的开发环境
  • 注:另外需要做的一件事就是对文件进行分级存储,让我能知道哪些文件是需要备份起来,如果文件夹坏掉可以知道之前有哪些重要文件

vscode portable 安装

csharp 复制代码
// 检测VSCode-linux-x64文件夹是否存在,否则解压code-stable-x64.tar.gz
// vi install_vscode.sh

#!/bin/bash
# 检查VSCode-linux-x64文件夹是否存在
vscode_folder="VSCode-linux-x64"

if [ -d "$vscode_folder" ]; then
    echo "VSCode-linux-x64 folder already exists."
else
    # 如果文件夹不存在,则解压code-stable-x64.tar.gz
    tar -xzvf code-stable-x64*.tar.gz
    
    # 或者使用以下命令解压(根据实际情况选择)
    # tar -xzvf code-stable-x64.tar.gz -C /your/installation/path
    
    echo "VSCode-linux-x64 folder extracted successfully."
fi
  • bash ./install_vscode.sh

安装基本工具

安装 build-essential

csharp 复制代码
sudo apt-get update
sudo apt-get install -y build-essential # build-essential 是一个包,它包含了构建软件所需的基本工具,包括 gcc-9,libstdc++-9-dev,g++-9,make (4.2.1-1.2)。
  • 我的系统中默认安装了gdb

    kubuntu@kubuntu:/media/kubuntu/系统$ gdb -v
    GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
    Copyright (C) 2020 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    kubuntu@kubuntu:/media/kubuntu/系统$ cmake -version
    Command 'cmake' not found, but can be installed with:
    sudo apt install cmake
    kubuntu@kubuntu:/media/kubuntu/系统$ g++ -v
    Command 'g++' not found, but can be installed with:
    sudo apt install g++
    kubuntu@kubuntu:/media/kubuntu/系统$ gcc -v
    Command 'gcc' not found, but can be installed with:
    sudo apt install gcc

安装 CMake

csharp 复制代码
// vi install_cmake.sh

#!/bin/bash

# 检测是否存在CMake命令,使用 command -v 命令来检查是否存在 cmake 命令。如果存在,command -v 会返回 0,否则返回非零值。
if command -v cmake &> /dev/null; then
    echo "CMake is already installed. Version: $(cmake --version | head -n1)"
else
    echo "CMake is not installed on this system."
    ./cmake-3.26.3-linux-x86_64.sh --skip-licence --prefix=/usr
	# 将CMake添加到PATH环境变量
	# 暂时添加:export PATH="/usr/cmake-3.26.3-linux-x86_64/bin:$PATH"
	echo 'export PATH="/usr/cmake-3.26.3-linux-x86_64/bin:$PATH"' >> ~/.bashrc
	source ~/.bashrc
fi

final script code

// vi final_install_vscode.sh

#!/bin/bash
# 检查VSCode-linux-x64文件夹是否存在
vscode_folder="VSCode-linux-x64"

if [ -d "$vscode_folder" ]; then
    echo "VSCode-linux-x64 folder already exists."
else
    # 如果文件夹不存在,则解压code-stable-x64.tar.gz
    tar -xzvf code-stable-x64*.tar.gz
    
    # 或者使用以下命令解压(根据实际情况选择)
    # tar -xzvf code-stable-x64.tar.gz -C /your/installation/path
    
    echo "VSCode-linux-x64 folder extracted successfully."
fi

sudo apt-get update
sudo apt-get install -y build-essential

# 检测是否存在CMake命令,使用 command -v 命令来检查是否存在 cmake 命令。如果存在,command -v 会返回 0,否则返回非零值。
if command -v cmake &> /dev/null; then
    echo "CMake is already installed. Version: $(cmake --version | head -n1)"
else
    echo "CMake is not installed on this system."
    # 暂时添加:export PATH="/usr/cmake-3.26.3-linux-x86_64/bin:$PATH"
    ./cmake-3.26.3-linux-x86_64.sh --skip-licence --prefix=/usr
     echo " go ro run final_add_path.sh "
fi
csharp 复制代码
// vi final_add_path.sh

#!/bin/bash
echo $PATH
echo 'export PATH="/usr/cmake-3.26.3-linux-x86_64/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
echo $PATH

安装插件

CMake Tools & cmake

C/C++ Extension Pack

Test

settings,json

  • 只需要简单配置settings,json即可

    // settings,json
    {
    "files.associations": {
    "iostream": "cpp"
    },

      "cmake.cmakePath": "/usr/cmake-3.26.3-linux-x86_64/bin/cmake"
    

    }

CMakeLists.txt

  • 可以直接使用工具创建: F1->CMAKE QUICK START

    cmake_minimum_required(VERSION 3.0.0)
    project(TEST VERSION 0.1.0 LANGUAGES C CXX)

    include(CTest)
    enable_testing()

    add_executable(TEST main.cpp)

    set(CPACK_PROJECT_NAME ${PROJECT_NAME})
    set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
    include(CPack)

  • 或者手动创建

    cmake_minimum_required(VERSION 3.0)
    project(my_project)

    添加可执行文件

    add_executable(my_project main.cpp)

调试和运行工具

  • 只需要左下角的几个按键即可
  • 调试效果:

CG

  • 如果按照以往的F5调试方案,会报错:The "cmake" debug type with "cmakeDebugType" set to "script" requires you to define a "scriptPath" that points to a CMake script. 需要将 launch.json 进行如下配置:
json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "使用 CMake 调试",
      "type": "cmake",
      "request": "launch",
      "program": "${workspaceFolder}/build/your_executable",  // 替换为你的可执行文件的路径
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": false,
      "preLaunchTask": "cmake",
      "setupCommands": [
        {
          "description": "启用 GDB 的漂亮打印",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      "cmake": {
        "cacheVariables": {
          "CMAKE_BUILD_TYPE": "Debug"
        },
        "buildDirectory": "${workspaceFolder}/build"
      },
      "cmakeDebugType": "script",
      "scriptPath": "${workspaceFolder}/.vscode/cmake-debugger.py"  // 替换为你的 CMake 调试脚本的路径
    }
  ]
}
相关推荐
奋斗的小花生8 分钟前
c++ 多态性
开发语言·c++
闲晨13 分钟前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
2401_8504108335 分钟前
文件系统和日志管理
linux·运维·服务器
XMYX-01 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
UestcXiye2 小时前
《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列
c++·计算机网络·ip·tcp
霁月风3 小时前
设计模式——适配器模式
c++·适配器模式
jrrz08283 小时前
LeetCode 热题100(七)【链表】(1)
数据结构·c++·算法·leetcode·链表
二十雨辰3 小时前
[linux]docker基础
linux·运维·docker
咖啡里的茶i3 小时前
Vehicle友元Date多态Sedan和Truck
c++
海绵波波1074 小时前
Webserver(4.9)本地套接字的通信
c++