CMake简介、语法、常用命令与编译流程

CMake简介、语法、常用命令与编译流程

  • CMake简介
  • 基本语法规则
  • CMake 常用命令
  • 编译流程

CMake简介

cmake是一个跨平台、开源的构建系统。它是一个集软件构建、测试、打包于一身的软件。它使用与平台和编译器独立的配置文件来对软件编译过程进行控制。

CMake特点

  • 开源,跨平台,是一个跨平台的编译工具,因为使用与平台和编译器无关的配置文件。
  • CMake 并不直接构建出最终的软件,而是生成标准的Makefile文件或者VisualStudio项目文件,然后再使用Make或者VisualStudio进行编译。
  • 依赖发现机制很强大,使用FIND_PACKAGE
  • 有很好的扩展性,效果也很高

基本语法规则

  • cmake变量使用${}方式取值,但是在IF控制语句中是直接使用变量名
  • 环境变量使用$ENV{}方式取值,使用SET(ENV{VAR} VALUE)赋值
  • 指令(参数1 参数2…)
    参数使用括弧括起,参数之间使用空格或分号分开。

CMake 常用命令

指定cmake的最小版本:

cmake_minimum_required (VERSION 3.0)

设置项目名字:

project(demo)

生成可执行文件:

add_executable(demo demo.cpp)

生成库文件(add_library默认生成静态库,可以显式的控制生成的库的类型):

add_library(common util.cpp)
add_library(common STATIC util.cpp) #生成静态库
add_library(common SHARED util.cpp) #生成动态库或共享库

设置包含目录:

include_directories()

设置链接库搜索目录:

link_directories()

设置需要链接的库:

target_link_libraries()

设置变量:

set(SRC_LIST main.cpp test.cpp)
add_executable(demo ${SRC_LIST})

条件控制:

if(MSVC)
	set(LINK_LIBS common)
else()
	set(boost_thread boost_log.a boost_system.a)
endif()
target_link_libraries(demo ${LINK_LIBS})

编译流程

  1. 编写CmakeLists.txt。
  2. 创建build目录。
  3. 在build目录中执行命令“cmake PATH”或者“ccmake PATH”生成 Makefile( PATH是CMakeLists.txt所在的目录 )。
  4. 使用make命令进行编译。(Windows平台的话用Visual Studio打开生成的demo.sln,然后编
    译)

你可能感兴趣的:(c++,开发语言)