亲宝软件园·资讯

展开

CMake语法及CMakeList.txt使用

ufgnix0802 人气:0

CMake简单介绍

Cmake主要用于开发跨平台的C++项目,对于Windows程序员来说,在Linux上开发C++程序会非常困难,一来没用过makefile,其语法非常生疏难懂,二来visual studio编译器实在优点太多(目前最新推出的vs2022中开启效率得到了质的提升,而且内置的IntelliCode更是直呼内行)。这就导致C++不同于其他语言,硬生生催生出Windows程序员和Linux程序员两个群体,直到出现CMake这个局面才被打破。

CMake可以在Linux上自动生成makefile,在Windows下可以生成vs解决方案sln,对于大规模跨平台项目绝对是首选。相比于makefile,CMake语法要简单的多。自vs2017之后vs便支持CMake语法,到目前vs2022仍然支持,其效果之不必多说。

TIPS:以下均使用vs2022进行介绍。

创建项目

效果图

效果图

TIPS:解决方案就是项目的合集,项目是对应每一个静态库,动态库和可执行文件的编译目标。

创建完成

效果图

TIPS:建议红色框框里面的内容一定要看一遍。

效果图

用CMake构建一个项目工程,是通过一个或多个CMakeLists.txt文件来控制的。CMakeLists.txt中包含一系列命令来描述需要执行的构建。

CMake语法

在CMakeLists.txt中的命令的语法,都是形如下面这种格式:

command (args ...)

常用的命令

cmake_minimum_required

设置项目要求的CMake最低版本号,如果当前版本的CMake低于所需的值,它将停止处理项目并报告错误。注意务必在project之前调用该命令,一般是在CMakeLists.txt文件开头调用。命令格式为:

cmake_minimum_required(VERSION major.minor[.patch[.tweak]] [FATAL_ERROR])

使用示例:

cmake_minimum_required(VERSION 2.8.5)
cmake_minimum_required(VERSION 3.8)

add_executable

使用指定的源文件给项目添加一个可执行文件。命令格式为:

add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])

参数介绍:

使用示例:

add_executable (CMakeClient0331 "CMakeClient0331.cpp" "CMakeClient0331.h")

project

  为整个工程设置一个工程名。命名格式为:

project (<PROJECT-NAME> [LANGUAGES] [<language-name>...])
project (<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] [LANGUAGES<language-name>...])

使用示例:

project ("CMakeClient0331")

set

将一个CMAKE变量设置为给定值。命名格式为:

set(<variable> <value>... [PARENT_SCOPE])

使用示例:

set(COCOS2D_ROOT ${CMAKE_SOURCE_DIR}/cocos2d)

常用的变量

使用${ }进行变量的引用。例如:message(${CMAKE_VERSION}),表示向用户显示cmake的完整版本号。CMake还提供了很多有用的变量。以下仅列举常用的变量:

内置宏

简单使用实例

以下项目中的CMakeLists.txt文件内容如下(应用场景为:生成客户端和服务端的可执行文件,同时指定生成可执行文件的目录),根目录的CMakeLists.txt无需修改。

效果图

# CMakeList.txt: Server0327 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)

#exe程序的路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)

# 将源代码添加到此项目的可执行文件。
add_executable (Server "Server0327.cpp" "Server0327.h")

add_executable (Client "CMakeClient0331.cpp" "CMakeClient0331.h")

# TODO: 如有需要,请添加测试并安装目标。

运行效果展示

效果图

效果图

效果图

加载全部内容

相关教程
猜你喜欢
用户评论