cmake学习

1. CHECK_CXX_COMPILER_FLAG

检查CXX编译器是否支持给定的flag
必须先include(CheckCXXCompilerFlag)
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG( )
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参数

link_directories 动态链接库或静态链接库的搜索路径,相当于指定gcc的-L参数

add_subdirectory 包含子目录,当工程包含多个子目录时,此命令有用

add_definitions 添加编译参数,比如add_definitions(-DDEBUG)将在gcc命令行添加DEBUG宏定义

add_executable 编译可执行程序

target_link_libraries 指定链接库,相同于指定-l参数

3.cmake 内置变量

CMAKE_C_COMPILER 指定C编译器,通常,CMake运行时能够自动检测C语言编译器。进行嵌入式系统开发时,通常需要设置此变量,指定交叉编译器。

CMAKE_CXX_COMPILER 指定C++编译器

CMAKE_C_FLAGS 指定编译C文件时编译选项,比如-g指定产生调试信息。也可以通过add_definitions命令添加编译选项。

EXECUTABLE_OUTPUT_PATH 指定可执行文件存放的路径。

LIBRARY_OUTPUT_PATH 指定库文件放置的路径

BUILD_SHARED_LIBS Switch between shared and static libraries

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

内置变量的使用:

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

你可能感兴趣的:(cmake学习)