第一天是工具介紹,主要是分享一下目前工作上常用的工具,也會是將來30天使用的工具
第一個介紹的是之後用來寫C++的工具VS Code
,相比於Visual Studio
,個人還是更熟悉VS Code的一些快捷鍵跟使用,而VS更多的時候,會被我拿來當一個快速測試小專案,新開一個專案,做簡單驗證某些函數的使用。
ctrl + /
alt + shit + A
alt + left
alt + right
shift + alt + down
shift + delete
alt + up(down)
ctrl + ~
ctrl + alt + down
ctrl + f
ctrl + h
,使用正則表達式可以更有效率# 判斷數字
^[0-9]*$
# 刪除空白行
^\s*(?=\r?$)\n
# 刪除帶有關鍵字的行
.*(word).*
# 不包含關鍵字的行
^((?!test).)*$
再來是分享一下VS Code
上面常用的套件,若是有人有不錯的套件要分享,也歡迎唷~
C/C++ Extension Pack
:C/C++算必備工具,有提供語法支援、路徑解析、主題顏色等功能CMake
、CMake Tools
:CMake在VS Code上的套件,透過VS Code可以用CMake去編譯C++的程式,下面會單獨介紹CMakeBookmarks
:標記特別行數,並可以加上註解Todo Tree
:標記未來需要做的事情,可以透過GUI快速檢視GitLens
:比較Git之間不同版本的差異、檢查某段程式碼的Git版本Docker
:這次開發會以Linux系統來做開發,所以也會使用docker這工具來建置開發環境Dev Containers
:可以在docker container裡面使用VS Code,但要注意有些套件會需要重新安裝Remote - Explorer
:該工具會結合Dev Containers
跟Remote - SSH
,去連到docker container裡面Remote - SSH
:透過VS Code去ssh到其他的機器上開發Docker是個開源的容器生成軟體,容器跟虛擬機有一點差距,這邊就不做贅述了。
使用Docker目的是用來快速建一個Linux系統(CentOS 7
)當作開發環境,選擇CentOS 7
系統的原因是工作上主要是以這個系統為主,而且也是免費開源的。
# 測試的Centos 7
docker run -v D:/dvt:/home --name=centos7 --tty centos:7
單單建置一個容器是無法用來開發C++的,還需要安裝很多工具才能做到,這些工具在每次建容器的時候都要重裝會太麻煩,所以用Dockerfile
,簡化每次安裝的過程。
FROM centos:7
RUN yum -y update
RUN yum -y install gcc
RUN yum -y install vim
# CentOS devtoolset
RUN yum -y install centos-release-scl
RUN yum -y install devtoolset-7
RUN scl enable devtoolset-7 bash
RUN echo 'source scl_source enable devtoolset-7' >> ~/.bashrc
# CMake Insatll
RUN cd /usr/local/src
RUN curl -LO https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2-linux-x86_64.tar.gz
RUN tar -xvf cmake-3.22.2-linux-x86_64.tar.gz
RUN mv cmake-3.22.2-linux-x86_64 /usr/local/cmake
RUN echo 'export PATH="/usr/local/cmake/bin:$PATH"' >> ~/.bashrc
RUN source ~/.bashrc
# git update version
RUN yum -y remove git
RUN yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
RUN yum -y install git
RedHat Dev Toolset Components是一個工具集合,裡面有GCC, GDB, Valgrind, Make等開發用的工具。
Dockerfile檔案有了之後,就可以透過該檔案建所要的容器環境,然後啟動起來。
docker build -t cpp_dev .
docker run -v D:/dvt:/home --name=cpp_dev --tty cpp_dev
在上面透過dockerfile建好開發環境後,就能利用vs code套件的remote explorer連到開發環境上面了。
CMake是一個跨平台的編譯輔助軟體,一般用C++的編譯器g++
,會需要很長的指令來編譯,但透過CMake提供的語法,能用參數化的形式簡化指令。
CMake的核心是CMakeLists.txt
,這個檔案能讓使用者搭配CMake語法,建置執行檔或lib,以下是簡單範本。
cmake_minimum_required(VERSION 3.10) # 設定最低版本要求
project(cmaketest) # 專案名稱
set(CMAKE_CXX_COMPILER "/opt/rh/devtoolset-7/root/usr/bin/g++") # 指定編譯器的路徑
set(CMAKE_CXX_FLAGS "-std=c++14") # 給編譯器的參數
# CMake中的變數使用
set(SRC
smain.cpp
)
add_executable(${PROJECT_NAME} ${SRC}) # 建置執行檔
CMakeLists.txt
可以當作是Visual Studio裡面專案檔的存在,定義相關依賴檔案、建置參數等設定,所以用CMake都會搭配類似下面的檔案目錄,src是放源代碼的地方,build是放編譯出來的檔案。
- 專案根目錄
- build/
- src/
- CMakeLists.txt
smain.cpp
#include <iostream>
int main()
{
std::cout << "hello it iron man \n";
return 0;
}
依照上面目錄架構,再用剛剛的範本建立一個用CMake編譯的執行檔,相關指令如下
cd 專案根目錄
mkdir build
cmake ..
make
這樣就能看到建置出來的執行檔在build的目錄下了
第一天就先介紹到CMake的最簡單版本,明天會接著補充CMake其他語法、以及如何偵錯,再來是分享如何搭配vcpkg
(套件管理工具),展示使用第三方套件的場景。
最後,以上內容(Dockerfile、CMakeLists專案)也可以從我的Github上去取得唷!