Linux CMake 快速使用(一)

2020-12-16 Pou光明

緣起:之前給別人提供的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光明

相關焦點

  • 是不是覺得Makefile很繁瑣,一個cmake文件就可以解決
    linux編譯程序的時候,通常是使用Makefile文件來進行編譯,這個是能夠提高效率的,但是對於大中型的項目,每個文件夾下都需要創建Makefile,並且改變項目目錄結構都需要調整Makefile文件,如果是小型項目的話,那花費的時間還是能夠接受的,但是大中型項目要調整目錄結構,這個工作量還是不小的。所以,我們可以通過使用cmake來解決這樣的問題。
  • 新技巧GET: 使用gdbserver來調試Linux CMake工程
    Visual Studio 2019 v16.5 Preview 1添加了一項新的特性:使用gdbserver對CMake工程進行遠程調試。在之前的一篇文章中,我們描述了如何在Linux docker容器中編譯CMake應用程式。在今天的文章中,我們將在前篇文章的基礎上涵蓋如下的內容:1. 在Linux docker容器中進行ARM交叉編譯。2.
  • Linux CMake 快速使用之共享庫庫創建與連結
    一、 處理多文件情況文件結構moreFile文件夾下分別是build、src文件夾以及主CMakeLists.txt文件src文件夾是main.cpp、子CMakeLists.txt文件以及其他源文件和頭文件2.
  • CMake 入門學習2 使用VSCode cmake插件
    一、準備環境vscodegccgdbcmakevscode 安裝插件:CMake Tools新建一個目錄mkdir -p d:/documents/cmake新建一個main.cpp文件:#include
  • 薅羊毛-使用空閒的linux伺服器進行挖礦,簡單粗暴輕鬆變現
    可能我的電腦比較垃圾,當然也可以訪問我的網站(http://www.qalangtao.com/blog/coin/),看下你的windows算力,我的linux是80多算力。寫完這篇,小編開始寫用門羅幣js挖礦的文章啦,歡迎關注。好了,開始正題。
  • 使用mac系統,基於cmake搭建OpenGL環境
    搭建OpenGL環境過程中,也是花費了不少時間,特別是基於cmake來搭建OpenGL的環境,網絡上的資料很少,並且也沒找到成功的例子,因此,這裡將搭建的過程分享出來。希望能夠對大家有一定的參考價值。這裡不會涉及太多專業術語,本文的目的就是要快速搭建好環境,方便後續的學習和工作的開展。
  • Linux編譯安裝PaddlePaddle
    paddle --network=host -it docker.paddlepaddlehub.com/paddle:latest-dev /bin/bash進入 docker 編譯 GPU 版本的 PaddlePaddle,執行命令如下:mkdir build && cd build# 編譯 GPU 版本的 PaddlePaddlecmake
  • 一次cmake編譯查錯,cmake重裝
    Centos7上面默認cmake版本為2.8.11版本,但是編譯包的時候會報各種奇怪的錯誤。這裡通過編譯json-c-0.14進行定位,錯誤如下圖所示。tar xzf json-c-0.14.tar.gzcmake .
  • g++,CMake和Makefile了解一下
    2.1 Makefile介紹 Makefile描述了整個工程的編譯、連結等規則,它定義了一系列規則來指定哪些文件需要編譯以及如何編譯、需要創建哪些庫文件以及如何創建這些庫文件、如何產生我們想要的可執行文件。
  • 1.2 CMake基礎:hello-headers
    常用的如下所示:CMAKE_SOURCE_DIR 源文件根目錄CMAKE_CURRENT_SOURCE_DIR 如果使用子項目和目錄,則使用當前源目錄PROJECT_SOURCE_DIR 當前cmake項目的源目錄CMAKE_BINARY_DIR 根二進位/構建目錄,運行cmake命令的目錄CMAKE_CURRENT_BINARY_DIR
  • JavaJniProject的創建和使用
    jni的創建和使用環境(此處的作業系統,只能是linux(默認) 或mac)安裝jdk,配置好環境變量.安裝cmake用來編譯動態庫說明:工程是gradle構建的工程.可以使用idea打開.4 實現頭文件的 cmake構建前提是必須裝了jdk並設置了JAVA_HOME環境變量,如果沒有,那麼自己絕對路徑來指定要引入的庫目錄.
  • 學習3D特效前的準備階段:使用mac系統,基於cmake搭建OpenGL環境
    搭建OpenGL環境過程中,也是花費了不少時間,特別是基於cmake來搭建OpenGL的環境,網絡上的資料很少,並且也沒找到成功的例子,因此,這裡將搭建的過程分享出來。希望能夠對大家有一定的參考價值。本文首先會介紹搭建OpenGL環境之前的準備條件,然後再總體說明搭建的流程,接著再針對每個流程進行詳細的說明。
  • CMake設置arm-linux-gcc交叉編譯器
    主機:Ubuntu10.04交叉編譯器:EABI-4.3.3本文引用地址:http://www.eepw.com.cn/article/201611/319327.htmCMake在ubuntu系統下默認使用系統的
  • CMake 入門學習1 Hello World
    一、簡介CMake是一款跨平臺的 通過CMakeList.txt構建Makefile的工具。創建 CMakeLists.txt 文件# Set the minimum version of CMake that can be used# To find the cmake version run# $ cmake --versioncmake_minimum_required(VERSION 3.5)# Set the project nameproject
  • Cmake學習總結(二) - OFweek電子工程網
    大家好,上次給大家分享了第一篇 cmake 文章:cmake學習總結(一),今天繼續給大家分享cmake。那麼廢話就不多說,開始內容分享。用好 Cmake,高興一整天(甚至……):1、多個源文件,使用命令 aux_source_directory(dir var):在上一篇文章最後結尾的時候,有一個問題,就是在同一目錄下面,有多個源文件的時候,這個時候你不能都往下面第三條命令裡面一直手動添加源文件,那工作效率多低啊:cmake_minimum_required
  • Cmake學習總結(三)
    /binroot@txp-virtual-machine:/home/txp/testmy/bin# lsmain注意這裡是切換到build目錄下去執行cmake哈。 這裡為啥這樣做呢,我們課可以看到在build目錄下執行cmake ..
  • KDevelop安裝與使用
    它運行於linux和其它類unix環境。KDevelop本身不包含編譯器,而是調用其它編譯器來編譯程序。一、KDevelop安裝打開命令窗口:1. 安裝gcc(編譯器)sudo apt-get build-dep gccsudo apt-get install build-essential2.
  • vs2017下使用Cmake生成源碼編譯錯誤以及解決方法
    錯誤碼提示內容編寫了一個比較大的項目工程,需要使用cmake,但是安裝的v2017進行編譯的時候,卻報了一堆的錯誤:The CXX compiler identification is unknownThe C compiler identification
  • Windows系統安裝CMake教程
    安裝OpenVINO之前需要先安裝Cmake 本文引用地址:http://www.eepw.com.cn/article/202008/416679.htm環境:Windows 64位首先下載CMake官網下載地址:https://cmake.org