cmake學(xué)習(xí)

1. CHECK_CXX_COMPILER_FLAG

檢查CXX編譯器是否支持給定的flag
必須先include(CheckCXXCompilerFlag)
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG(<flag> <var>)
CHECK_CXX_COMPILER_FLAG 賦值給的var是個bool型
例子:

include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
   add_definitions(-DCOMPILEDWITHC11)
   message(STATUS "Using flag -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
   add_definitions(-DCOMPILEDWITHC0X)
   message(STATUS "Using flag -std=c++0x.")
else()
   message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

2. cmake常用命令

include_directories 指定頭文件的搜索路徑,相當于指定gcc編譯器的-I參數(shù)

link_directories 動態(tài)鏈接庫或靜態(tài)鏈接庫的搜索路徑,相當于指定gcc的-L參數(shù)

add_subdirectory 包含子目錄,當工程包含多個子目錄時,此命令有用

add_definitions 添加編譯參數(shù),比如add_definitions(-DDEBUG)將在gcc命令行添加DEBUG宏定義

add_executable 編譯可執(zhí)行程序

target_link_libraries 指定鏈接庫,相同于指定-l參數(shù)

3.cmake 內(nèi)置變量

CMAKE_C_COMPILER 指定C編譯器,通常,CMake運行時能夠自動檢測C語言編譯器。進行嵌入式系統(tǒng)開發(fā)時,通常需要設(shè)置此變量,指定交叉編譯器。

CMAKE_CXX_COMPILER 指定C++編譯器

CMAKE_C_FLAGS 指定編譯C文件時編譯選項,比如-g指定產(chǎn)生調(diào)試信息。也可以通過add_definitions命令添加編譯選項。

EXECUTABLE_OUTPUT_PATH 指定可執(zhí)行文件存放的路徑。

LIBRARY_OUTPUT_PATH 指定庫文件放置的路徑

BUILD_SHARED_LIBS Switch between shared and static libraries

CMAKE_BUILD_TYPE build 類型(Debug, Release),-DCMAKE_BUILD_TYPE=Debug

內(nèi)置變量的使用:

在CMakeLists.txt中指定,使用set
cmake命令中使用,如cmake -DBUILD_SHARED_LIBS=OFF

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容