CMakeLists.txt語法規則彙總
阿新 • • 發佈:2022-04-18
//宣告要求的cmake最低版本,終端輸入cmake -version可檢視cmake的版本 cmake_minimum_required( VERSION 2.8 ) //宣告cmake工程名字 project(slam) //設定使用g++編譯器,這是新增變數的用法set(KEY VALUE)接收兩個引數,用來宣告變數。在camke語法中使用${KEY}這種寫法來取到VALUE set( CMAKE_CXX_COMPILER "g++") //設定cmake編譯模式有debug和release兩種PROJECT_SOURCE_DIR專案根目錄也就是是CmakeLists.txt的絕對路徑 set( CMAKE_BUILD_TYPE "Release" ) //設定生成的可執行二進位制檔案存放的存放目錄 set( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) //設定生成的庫檔案的存放目錄 set( LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) //引數CMAKE_CXX_FLAGS含義是: set compiler for c++ language //新增c++11標準支援,*.CPP檔案編譯選項,-march=native指定目標程式的cpu架構來進行程式優化 //native就是相當於自檢測cpu,-march是gcc優化選項,後面的-O3是用來調節編譯時的優化程度的,最高為-O3,最低為-O0即不做優化 //-Ox這個引數只有在CMake -DCMAKE_BUILD_TYPE=release時有效 //因為debug版的專案生成的可執行檔案需要有除錯資訊並且不需要進行優化,而release版的不需要除錯資訊但需要優化 set( CMAKE_CXX_FLAGS “-std=c++11 -march=native -O3”) //除錯手段message列印資訊,類似於echo/printf,主要用於查cmake檔案的語法錯誤 set(use_test ${SOURCES_DIRECTORY}/user_accounts.cpp) message("use_test : ${use_test}") //在CMakeLists.txt中指定安裝位置, 在編譯終端指定安裝位置:cmake -DCMAKE_INSTALL_PREFIX=/usr .. set(CMAKE_INSTALL_PREFIX < install_path >) //增加子資料夾,也就是進入原始碼資料夾繼續構建 add_subdirectory(${PROJECT_SOURCE_DIR}/src) //新增依賴,去尋找該庫的標頭檔案位置、庫檔案位置以及庫檔名稱,並將其設為變數,返回提供給CMakeLists.txt其他部分使用。 //cmake_modules.cmake檔案是把CMakeLists.txt裡用來尋找特定庫的內容分離出來,如果提示沒有找到第三方依賴庫可以嘗試安裝或者暴力指定路徑 // 尋找OpenCV庫 find_package( OpenCV REQUIRED ) //在CMakeLists.txt中使用第三方庫的三部曲:find_package、include_directories、target_link_libraries include_directories(${OpenCV_INCLUDE_DIRS})// 去哪裡找標頭檔案 link_directories()// 去哪裡找庫檔案(.so/.lib/.ddl等) target_link_libraries( ${OpenCV_LIBRARIES})// 需要連結的庫檔案 message("OpenCV_INCLUDE_DIRS: \n" ${OpenCV_INCLUDE_DIRS}) message("OpenCV_LIBS: \n" ${OpenCV_LIBS}) // find_package(Eigen3 REQUIRED), 假如找不到Eigen3庫,我們就設定變數來指定Eigen3的標頭檔案位置 set(Eigen3_DIR /usr/lib/cmake/eigen3/Eigen3Config.cmake) include_directories(/usr/local/include/eigen3)