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