想运行一个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
项目目录如下图所示
swap.cpp
#include "swap.h"
void swap(int &a,int &b){
int temp;
temp = a;
a = b;
b = temp;
}
main. cpp
#include<iostream>
#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<iostream>
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)