c++项目环境搭建(VMware+linux+ubantu+vscode+cmake)

想运行一个c++项目,但是环境怎么整呢?b站走起!!!

本文需要的安装包

链接:https://pan.baidu.com/s/1XJbR2F1boQ-CqV8P71UOqw 
提取码:swin

一、在虚拟机中安装ubantu

八分钟完成VMware和ubuntu系统安装_哔哩哔哩_bilibili

按照视频来就行,别直接在计算机上安装linux系统,呜呜呜~~~找到一个博客,我跟着走之后发现硬盘被格式化了,呜呜呜呜~~~~太惨了,我那么大一个数据集全没了。。。。

二、linux命令

pwd  //打印当前目录
ls //输出当前目录下的文件、文件夹的名称
ls -lah [file] //以列表显示
../   //上一级目录
cd //切换当前的工作目录
mkdir //创建目录
mkdir -p [file]  //创建多层不存在的目录
touch //创建文件
rm //删除文件目录
rm -rf //移除目录
cp -r //复制文件/文件夹到指定的位置
mv //移动文件到新的位置,或者重命名文件
man //包含了linux中全部命令手册
reboot  //重启虚拟机
shutdown -h now  //关闭虚拟机
vim //创建文件 i 进入插入模式 esc 退出模式 :w 保存 :q 退出
gedit //进入文件  linux下的纯文本编辑器
nano  //进入文件  小巧的文本编辑器

三、开发环境搭建 

 基于VSCode和CMake实现C/C++开发 | Linux篇_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1fy4y1b7TC/?spm_id_from=333.788.recommend_more_video.0&vd_source=5e970d20c101731870f4d753d2ac710c

好的,开始跟着视频搭建环境。。。以下是我自己记的笔记,建议跟着视频一步一步来。

sudo apt update  //更新,下载安装包之前运行
sudo apt install gcc //下载gcc gdb g++ cmake
g++ --version //查看是否安装成功,显示版本号就是安装成功了
vim test.cpp //创建一个测试文件
g++ test.cpp -o test //编译这个文件
./test //运行
g++ test.cpp -O2 -o test //优化
time ./test // 查看执行时间
rm test // 删除文件

 编译过程

g++ -E test.cpp -o test.i //预处理
g++ -S test.cpp -o test.s //编译
g++ -C test.cpp -o test.o //汇编
g++ test.o -o test //链接

 一个简单的Demo

项目目录如下图所示

c++项目环境搭建(VMware+linux+ubantu+vscode+cmake)_第1张图片

swap.cpp

#include "swap.h"
void swap(int &a,int &b){
    int temp;
    temp = a;
    a = b;
    b = temp;
}

main. cpp

#include
#include "swap.h"
using namespace std;

int main(int argc,char **argv){
    int val1 = 10;
    int val2 = 20;

    cout << "Before Swap" << endl;
    cout << "val1=" << val1 << endl;
    cout << "val2=" << val2 << endl;
    swap(val1, val2);
    cout << "After Swap" << endl;
    cout << "val1=" << val1 << endl;
    // cout << "val2=" << val2 << endl;
    return 0;
}

 swap.h

void swap(int &a, int &b);

执行语句

g++ main.cpp src/swap.cpp -Iinclude
./a.out

g++ main.cpp src/swap.cpp -Iinclude -Wall -std=c++11 -o b.out
./b.out

一些参数

-l -L //指定库文件|指定库文件路径
-I //指定头文件
-Wall //打印警告信息
-w //关闭警告信息
-std=c++ //设置编译标准
-o //指定输出文件名
-D //定义宏

生成库文件并编译

链接静态库可执行文件

cd src
g++ swap.cpp -c -I../include //汇编
ar rs libswap.a swap.o //生成静态库
cd ..
g++ main.cpp -lswap -Lsrc -Iinclude -o static_main //链接,生成可执行文件

链接动态库可执行文件 

g++ swap.cpp -I../include -fPIC -shared -o libswap.so
cd..
g++ main.cpp -Iinclude -lswap -Lsrc -o dyna_main
LD_LIBRARY_PATH=src ./dyna_main

调试sum.cpp文件

sum.cpp

#include
using namespace std;
int main(){
  int N = 100;
  int sum = 0;
  int i = 1;
  while (i <= N){
    sum = sum + i;
    i = i + 1;
  }
  cout << "sum = " << sum << endl;
  cout << "over" << endl;
  return 0;
}
g++ sum.cpp -o a_no_g
g++ -g sum.cpp -o a_yes_g //可调式

ctrl+l //清屏

:set nu //显示文件内行数

ctrl+shift+“+”号 //放大终端

gdb a_yes_g //编译
run  //运行
break 13 //加断点
info breakpoints //查询断点
print i //查看i中的数值
continue //F5
display i //输出i
list //显示断点附近的代码

开始vscode之旅

sudo snap install --classic code //安装vscode
code . //打开vscode
g++ main.cpp src/swap.cpp -Iinclude -o main //编译
./main //运行

课程七讲 | PDF课件
链接:https://pan.baidu.com/s/13K-8zbBIMePIG6cOVhSvHQ
提取码:bing

回复“linux”可获取课程七讲linux篇的源码

回复“windows”可获取windows篇的源码

基于VSCode和CMake进行C/C++开发 | 课程七讲 | 源码下载
链接:https://pan.baidu.com/s/1quqJFgyF4alAQSXaRWGiWg
提取码:bing 

cmake start

//指令是大小写无关的,参数和变量是大小写相关的
set(HELLO hello.cpp)
add_executable(hello main.cpp hello.cpp)
ADD_EXECUTABLE(hello main.cpp ${HELLO})
//变量使用${}方式取值,但是在IF控制语句中是直接使用变量名

重要指令 

# 指定cmake最小版本要求
cmake_minimum_required(VERSION 2.8.3)

# 定义工程名称,并可指定工程支持的语言
project(HELLOWORLD)

# 显示的定义变量
set(SRC sayhello.cpp hello.cpp)

# 向工程添加多个特定的头文件搜索路径
link_directories(/user/lib/mylibfolder ./lib)

# 生成库文件
add_library(hello SHARED ${SRC})

#添加编译参数
add_compile_options(-Wall -std=c++11 -o2)

# 生成可执行文件
add_executable(main main.cpp)

#为target添加需要链接的共享库
target_link_libraries(main hello)

#向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置
add_subdirectory(src)

# 发现一个目录下所有的源代码文件并将列表存储在一个变量中,这个指令临时被用来自动构建文件列表
aux_source_directory(. SRC) 
add_executable(main ${SRC})

常用变量 

CMAKE_C_FLAGS   //gcc编译选项
CMAKE_CXX_FLAGS   //g++编译选项
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

CMAKE_BUILD_TYPE  //编译类型(Debug, Release)
set(CMAKE_BUILD_TYPE Debug)

两种构建方式 

内部构建
cmake .

make

外部构建
mkdir build

cd build

cmake ..  //编译上级目录的CMakeLists.txt,生成Makefile和其他文件

make   //执行make命令,生成target

最小CMake工程

cmake_minimum_required(VERSION 3.0)

project(HELLOWORLD)

add_executable(hello_cmake helloworld.cpp)   == g++ helloworld.cpp -o hello

 多目录工程-直接编译

cmake_minimum_required(VERSION 3.0)

project(SOLIDERFIRE)

include_directories(include)


add_executable(main_cmake main.cpp src/Gun.cpp src/Solider.cpp)

你可能感兴趣的:(实习,linux,ubuntu,运维)