CMake部分簡單記錄

2021-10-13 13:13:25 字數 2148 閱讀 2916

嵌入式

使用cmake要在每個原始碼檔案下建立cmakelists.txt。

cmake_minimum_required (version 2.8)表明至少cmake版本2.8。

在其後必須設定編譯器,否則不起作用,直接採用預設編譯器編譯。

set(cmake_system_name linux)指定系統名。

set(cmake_c_compiler "/home/gd9527/vmtool/gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc")指定編譯器絕對路徑。

set(cmake_find_root_path_mode_program never)

set(cmake_find_root_path_mode_library only)

set(cmake_find_root_path_mode_include only)一些相關的設定。

project (demo)專案名稱。

set(cmake_system_processor arm)指定處理器名。

set(cmake_crosscompiling true)指定是交叉編譯。

set(cmake_c_flags "$ -o0 -ggdb -wall -wextra -dnetdata_internal_checks=1 -dnetdata_verify_locks=1 $ $ $ $")設定編譯選項

#-o0:關閉所有優化選項

#-o1:第一級別優化,使用此選項可使可執行檔案更小、執行更快,並不會增加太多編譯時間,可以簡寫為-o

#-o2:第二級別優化,採用了幾乎所有的優化技術,使用此選項會延長編譯時間

#-o3:第**別優化,在-o2的基礎上增加了產生inline函式、使用暫存器等優化技術

#-os:此選項類似於-o2,作用是優化所占用的空間,但不會進行效能優化,常用於生成最終版本

#-ggdb:在可執行檔案中包含可供gdb使用的除錯資訊

#-wall:開啟大部分警告提示

#-wextra:對所有合法但值得懷疑的表示式發出警告

set(timer_dir $/timer)將專案檔案下timer檔案路徑重新命名為timer_dir;同理有set(task_mag_dir $/task/taskmag),將專案檔案下task資料夾中的taskmag資料夾路徑重新命名為task_mag_dir。

add_subdirectory($)新增子目錄timer_dir(此為前面重新命名的路徑),同理有add_subdirectory(timer)以及add_subdirectory($)

include_directories($)新增標頭檔案。

aux_source_directory(. main_file)查詢當前目錄下的所有原始檔,並將名稱儲存到 main_file 變數。

add_executable(myoncetry $)指定生成目標myoncetry。

target_link_libraries(myoncetry timer taskmag tlibpthread.so)新增鏈結庫,由於linux的預設庫不包括pthread,所以手動加入libpthread.so。

對於子檔案下

include_directories(.)新增本資料夾下的標頭檔案

aux_source_directory(. dir_lib_srcs)查詢當前目錄下的所有原始檔,並將名稱儲存到 dir_lib_srcs 變數

add_library (timer $)生成鏈結庫

target_link_libraries(timer)新增鏈結庫

在buid資料夾中cmake ..再操作。

CMake 簡單教程

sudo add apt repository ppa george edison55 cmake 3.x sudo apt get update sudo apt get install cmake更多變數查詢位址 project的名稱 project caffe framework 最低版本限制...

Cmake簡單例項

cmake注意點 命令用小寫,變數用大寫,沒有強制的要求,可以形成風格!cmake的執行就是這麼簡單,其難點在於如何編寫cmakelists.txt檔案,下面結合例子簡單介紹cmakelists.txt的編寫,看下面這個cmakelists.txt project name project test...

CMake簡單使用

先說一下背景 最後整個過程表象上就成了,我有了源 後,寫乙個cmakelists.txt就可以編譯鏈結生成程式了。舉個簡單栗子 假如有個源 helloslam.cpp include int main 好,同資料夾,我們編寫上cmakelists.txt文件 cmakelists.txt cmake...