cmake入門實戰
使用 cmake 進行交叉編譯
cmake 編譯選項設定
cmake時新增-fpic編譯選項
project_source_dir 工程的根目錄
project_binary_dir 執行cmake命令時所在的目錄
cmake_include_path 環境變數
cmake_library_path
cmake_current_source_dir 當前在處理的cmakelists.txt所在目錄
cmake_current_binary_dir target編譯目錄
cmake_current_list_file 呼叫這個變數的cmakelists.txt所在的完整路徑
cmake_current_source_dir cmakelists.txt所在的完整路徑
# 設定編譯模式,debug/release
set(cmake_build_type "debug"
)# debug/release的編譯選項
set(cmake_cxx_flags_debug "$env -o0 -wall -g -ggdb"
)set(cmake_cxx_flags_release "$env -o3 -wall"
)# 也可以直接設定編譯選項
set(cmake_cxx_flags ...)
巨集:-d 在命令列使用-d定義巨集,在cmakelists.txt裡面可以用set定義巨集
cmake_cxx_compiler 指定c++編譯工具
cmake_cxx_flags 指定c++編譯引數,
cmake_c_compiler 指定c編譯工具
cmake_c_flags 指定c編譯引數,相當於cflags
cmake_toolchain_file 指定cmake檔案,這個檔案可以定義一系列的cmake_字首變數
cmake_install_prefix 指定cmkae的安裝目錄(make install)
cmake_cxx_standard 指定g++的標準,用set的時候類似 –std=c++11
cmake_c_standard指定gcc的標準,用set的時候類似 –std=c11
executable_output_path 指定exe檔案最終輸出資料夾
library_output_path 指定lib檔案最終輸出資料夾
findpackage()
add_definitions()新增編譯選項,多個可以用空格隔開,實際上可以用它來新增巨集定義,新增-std=c++11/c11
add_compile_options(-std=c++11)新增編譯選項(gcc和g++都新增),類似cmake_cxx_flags和cmake_c_flags,
set()設定乙個變數,也可以用來定義巨集,也可以定義其他的環境變數
add_dependencies(taget depend1 …)給目標新增依賴,在編譯目標前會先編譯被依賴的目標,多個依賴用空格分開
aux_source_directory(dirname arg)把指定資料夾下所有的源檔名列表加入到指定變數中
include(file)匯入其他cmakelists.txt檔案
install()關鍵字:安裝,與cmake_install_prefix有關
and/or/not
cmake版本要求
cmake_minimun_required(version version)
新增乙個可執行檔案編譯目標
add_executable(target sourcefile …)
新增乙個動態/靜態庫的編譯目標
add_library(target shared/static sourcefile …)
給編譯目標鏈結庫
target_link_libraries(target –l*** …)
設定變數(可以用這種方法定義巨集,只針對巨集有內容情況)
set(arg content)
例:set(executable_output_path dirname) 指定exe檔案最終的輸出路徑
set(library_output_path dirname) 指定lib檔案最終的輸出路徑
這2個設定一般是緊緊跟隨同乙個cmakelists.txt檔案的add_executable()/add_library()
定義巨集,格式跟命令列一樣
add_definitions
(命令列定義巨集樣式)
例如:add_definitions(-ddebug)
包含子目錄(包含子目錄的cmakelists.txt檔案)
add_subdirectory
(dirmane)
指定標頭檔案掃瞄目錄
include_directories
(dirname)
指定庫掃瞄目錄
link_directories
(dirname)
訊息列印
message
(status msg)
11)file命令
file
(cmd filename arg1 arg2 ...
)
12)在目錄中查詢所有原始檔,檔案列表存在variable中
aux_source_directory
()
13)在目錄中掃瞄所有符合條件的檔案,glob只有本地有效,glob_recurse子檔案也有效
file(glob user_libs_path ./src/*.cpp)
file(glob_recurse user_libs_path ./src/*.cpp)
陣列引數 和 指標引數 分析
c語言中只會以值拷貝的方式傳遞引數,傳址呼叫本質上也是對位址值的傳遞。當向函式傳遞陣列時,將陣列名看做常量指標傳陣列首元素位址。c語言以高效為最初設計目標,在函式傳遞的時候如果拷貝整個陣列執行效率將大大下降,因此只傳遞首元素的位址。二維陣列引數同樣存在退化的問題,二維陣列可以看做是一維陣列,二維陣列...
25 陣列引數和指標引數分析
目錄c 語言以高效作為最初設計目標 二維陣列引數中第一維的引數可以省略 void f int a 5 void f int a void f int a void g int a 3 3 void g int a 3 void g int a 3 等價關係 陣列退化後,所退化的指標必須能指向原陣列中...
SFDR 引數分析
sfdr是訊號系統處理中常用的一項引數,對於評估系統的雜訊水平和adc dac的效能有一定參考意義。sfdr,英文全稱是 spurious free dynamic range,意為無雜散動態範圍。sfdr是指基波強度與最大雜波或諧波的強度之比,所以sfdr值越大則說明系統的雜訊水平越低,靈敏度越高...