想運行一個c++項目,但是環(huán)境怎么整呢?b站走起?。?!
本文需要的安裝包
鏈接:https://pan.baidu.com/s/1XJbR2F1boQ-CqV8P71UOqw?
提取碼:swin
一、在虛擬機中安裝ubantu
八分鐘完成VMware和ubuntu系統(tǒng)安裝_嗶哩嗶哩_bilibili
按照視頻來就行,別直接在計算機上安裝linux系統(tǒng),嗚嗚嗚~~~找到一個博客,我跟著走之后發(fā)現(xiàn)硬盤被格式化了,嗚嗚嗚嗚~~~~太慘了,我那么大一個數(shù)據(jù)集全沒了。。。。
二、linux命令
pwd //打印當(dāng)前目錄
ls //輸出當(dāng)前目錄下的文件、文件夾的名稱
ls -lah [file] //以列表顯示
../ //上一級目錄
cd //切換當(dāng)前的工作目錄
mkdir //創(chuàng)建目錄
mkdir -p [file] //創(chuàng)建多層不存在的目錄
touch //創(chuàng)建文件
rm //刪除文件目錄
rm -rf //移除目錄
cp -r //復(fù)制文件/文件夾到指定的位置
mv //移動文件到新的位置,或者重命名文件
man //包含了linux中全部命令手冊
reboot //重啟虛擬機
shutdown -h now //關(guān)閉虛擬機
vim //創(chuàng)建文件 i 進入插入模式 esc 退出模式 :w 保存 :q 退出
gedit //進入文件 linux下的純文本編輯器
nano //進入文件 小巧的文本編輯器
三、開發(fā)環(huán)境搭建?
?基于VSCode和CMake實現(xiàn)C/C++開發(fā) | Linux篇_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1fy4y1b7TC/?spm_id_from=333.788.recommend_more_video.0&vd_source=5e970d20c101731870f4d753d2ac710c
好的,開始跟著視頻搭建環(huán)境。。。以下是我自己記的筆記,建議跟著視頻一步一步來。
sudo apt update //更新,下載安裝包之前運行
sudo apt install gcc //下載gcc gdb g++ cmake
g++ --version //查看是否安裝成功,顯示版本號就是安裝成功了
vim test.cpp //創(chuàng)建一個測試文件
g++ test.cpp -o test //編譯這個文件
./test //運行
g++ test.cpp -O2 -o test //優(yōu)化
time ./test // 查看執(zhí)行時間
rm test // 刪除文件
?編譯過程
g++ -E test.cpp -o test.i //預(yù)處理
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);
執(zhí)行語句
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
一些參數(shù)
-l -L //指定庫文件|指定庫文件路徑
-I //指定頭文件
-Wall //打印警告信息
-w //關(guān)閉警告信息
-std=c++ //設(shè)置編譯標(biāo)準
-o //指定輸出文件名
-D //定義宏
生成庫文件并編譯
鏈接靜態(tài)庫可執(zhí)行文件
cd src
g++ swap.cpp -c -I../include //匯編
ar rs libswap.a swap.o //生成靜態(tài)庫
cd ..
g++ main.cpp -lswap -Lsrc -Iinclude -o static_main //鏈接,生成可執(zhí)行文件
鏈接動態(tài)庫可執(zhí)行文件?
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
調(diào)試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 //可調(diào)式
ctrl+l //清屏
:set nu //顯示文件內(nèi)行數(shù)
ctrl+shift+“+”號 //放大終端
gdb a_yes_g //編譯
run //運行
break 13 //加斷點
info breakpoints //查詢斷點
print i //查看i中的數(shù)值
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
回復(fù)“l(fā)inux”可獲取課程七講linux篇的源碼
回復(fù)“windows”可獲取windows篇的源碼
基于VSCode和CMake進行C/C++開發(fā) | 課程七講 | 源碼下載
鏈接:https://pan.baidu.com/s/1quqJFgyF4alAQSXaRWGiWg
提取碼:bing?
cmake start
//指令是大小寫無關(guān)的,參數(shù)和變量是大小寫相關(guān)的
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})
#添加編譯參數(shù)
add_compile_options(-Wall -std=c++11 -o2)
# 生成可執(zhí)行文件
add_executable(main main.cpp)
#為target添加需要鏈接的共享庫
target_link_libraries(main hello)
#向當(dāng)前工程添加存放源文件的子目錄,并可以指定中間二進制和目標(biāo)二進制存放的位置
add_subdirectory(src)
# 發(fā)現(xiàn)一個目錄下所有的源代碼文件并將列表存儲在一個變量中,這個指令臨時被用來自動構(gòu)建文件列表
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)
兩種構(gòu)建方式?
內(nèi)部構(gòu)建
cmake .
make
外部構(gòu)建
mkdir build
cd build
cmake .. //編譯上級目錄的CMakeLists.txt,生成Makefile和其他文件
make //執(zhí)行make命令,生成target
最小CMake工程文章來源:http://www.zghlxwxcb.cn/news/detail-449171.html
cmake_minimum_required(VERSION 3.0)
project(HELLOWORLD)
add_executable(hello_cmake helloworld.cpp) == g++ helloworld.cpp -o hello
?多目錄工程-直接編譯文章來源地址http://www.zghlxwxcb.cn/news/detail-449171.html
cmake_minimum_required(VERSION 3.0)
project(SOLIDERFIRE)
include_directories(include)
add_executable(main_cmake main.cpp src/Gun.cpp src/Solider.cpp)
到了這里,關(guān)于c++項目環(huán)境搭建(VMware+linux+ubantu+vscode+cmake)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!