1.CMake简介
- CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不相依于某特定编译器。
- 可支持多层目录、多个应用程序与多个库。
- 它用配置文件控制建构过程(build process)的方式和Unix的make相似,只是CMake的配置文件取名为CMakeLists.txt。
- CMake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或Windows Visual C++的projects/workspaces),然后再依一般的建构方式使用。
- 它首先允许开发者编写一种平台无关的CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。显然,CMake 是一个比上述几种 make 更高级的编译配置工具。
- “CMake”这个名字是”Cross platform Make”的缩写。虽然名字中含有”make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高端。 它可与原生建置环境结合使用,例如:make、苹果的Xcode与微软的Visual Studio。
2. 基本示例
```cmake制定camke的基本版本
cmake_minimum_required(VERSION 2.8.7)
设置项目名称
project(demo)
判断编译器类型,如果是GCC编译工具
if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS “-std=c++11 ${CMAKE_CXX_FLAGS}”) #给C++编译器添加c++11参数 message(STATUS “optional:-std=c++11”) #显示状态消息
set(CMAKE_C_FLAGS “-std=c99 ${CMAKE_C_FLAGS}”) #给C编译器添加c++99参数
endif(CMAKE_COMPILER_IS_GNUCXX)
设置编译生成的二进制可执行文件存放位置
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
设置包含的头文件的目录
include_directories(${PROJECT_SOURCE_DIR}/inc)
搜索指定目录下的所有源程序文件,存储在一个变量中
aux_source_directory(./src SRC_DIR) #下面的例子中:目录-> “./src” ; 变量-> “SRC_DIR”
指定工程生成目标文件
add_executable(${PROJECT_NAME}_exe ${SRC_DIR}) ```