CMake简介:
CMake是一种跨平台的开源项目管理工具,所做的事其实就是告诉编译器如何去编译链接源代码。与之相似的是直接编写makefile文件,但makefile最大的缺点就是不能跨平台,一旦更换环境就要重新编写,于是我们可以使用CMake编写CMakeLists文件来解决此问题。
检查是否安装CMake
首先检查是否安装CMake,在终端输入cmake —version来检查,若显示未安装,可以使用sudo apt-get install camke ( ubuntu),或者brew install cmake (macos),windows直接去官网下载,来安装CMake。
常用指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| cmake_minimum_required(VERSION xxx)
project(xxx)
add_executable(target target_source_codes)
SET(var_name var_value)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g -wall ")
set(CMAKE_BUILD_TYPE Debug)
MESSAGE("MSG")
option(var_name "comment" var_value)
include_directories(xxx)
add_subdirectory(xxx)
add_compile_options(xxx)
link_directories(xxx)
add_library(lib_name SHARED or STATIC lib_source_code)
target_link_libraries(target_name lib_name ...)
|
简单应用
下图是一般的项目文件格式,include 存放头文件,src存放源代码文件,build存放临时编译文件。
假设工程文件夹名为Test,我们可以将CMakeLists.txt文件放在Test文件夹下,也就是src,include的同级目录下,以下是简单的CMakeLists文件编写格式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| cmake_minimum_required(VERSION 3.0)
PROJECT(Test)
INCLUDE_DIRECTORIES(include) INCLUDE_DIRECTORIES(/usr/local/include/)
AUX_SOURCE_DIRECTORY(src DIR_SRCS)
SET(CMAKE_CXX_STANDARD 11)
add_executable(test ${DIR_SRCS})
|
由于该过程中会产生很多中间文件,因此我们在build文件夹下使用cmake命令,这样这些文件就都放在build文件夹下,然后make运行就好:
1 2 3 4
| cd build cmake .. make ./test
|