image.png

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}) ```

3. 参考资料