緣起:之前給別人提供的SDK都是在Linux下使用Qt搭建的,但是最近有客戶不使用Qt,而是需要在Linux下使用cmake進行進行文件組織。於是我就進行谷歌,現在將可用的程序記錄下來。
平時直接使用IDE開發,所以對整個編譯的過程了解得不深入,藉此機會,在接下來的文章中可能會涉及到程序如何從文本文件到屏幕上的字節流輸出。
系統平臺:ubuntu16.04 _x64
一、最簡單的CMake編寫
1. 源文件
main.cpp
#include <iostream>
int main()
{
std::cout << "Hello, world!" << std::endl;
return 0;
}
CMakeLists.txt
#Cmake 最低版本要求
cmake_minimum_required(VERSION 3.5)
#設置Project名稱
PROJECT(first)
#使用指定的源文件將可執行文件添加到Project中
ADD_EXECUTABLE(hello main.cpp)
2. 文件結構
如未安裝,使用sudo apt install tree命令安裝。
使用tree -L 1 命令以樹狀圖列出目錄的內容(也可只使用tree命令)。
tree -L N 以樹狀圖顯示所有文件,子文件夾顯示到第 N 層
效果如下:
3. 編譯步驟:
cd source(CMakeLists.txt所在目錄)
cmake .
make
①文件及所在目錄
②終端改變目錄,執行cmake .
③執行make,生成可執行程序
④運行可執行程序效果
4. 小結
剛安裝的ubuntu 16.04沒有cmake, 使用sudo apt install cmake命令可完成安裝。
二、改善文件結構
通過以上幾個步驟,我們掌握了基本cmake命令使用、makefile文件編寫等技能。但是生成的中間文件與源文件與makefile混在一起,這在實際應用中肯定是不行的。所以接下來我們進行文件結構梳理—— out-of-source builds
1. 文件結構
2. 外層makefile文件
PROJECT(second)
#添加子目錄
ADD_SUBDIRECTORY(src)
3. 在build文件夾中進行編譯
過程:
進入build文件夾
cmake ..
注意是 cmake ..
中間文件在build文件下
可執行文件所在目錄
三、小結
之後會和大家分享創建共享庫以及連結共享庫的makefile文件
如何讓每天雖重複卻也有意義呢 ?
歡迎大家關注公眾號: Pou光明