CMake编译总结

1.cmake –version 查看cmake的版本,确认是否安装成功。注意空格和大小写。

CMake编译总结

2.CMakeLists.txt 的定义:CMakeLists.txt 是一个文本文件,用于描述 C++ 项目的构建规则。 是告知 CMake 如何编译、链接代码,以及如何生成最终的可执行文件或库。

CMakeLists.txt 文件一般位于项目的根目录,也可以位于子目录中,用于描述子目录下的构建规则。

它的核心工作就是读取 CMakeLists.txt 文件,并根据其中的描述,生成特定平台的构建系统。 也可这么理解,CMakeLists.txt 是 CMake 的输入,而构建系统(例如 Makefile 或 Visual Studio 解决方案)是 CMake 的输出。

3.CMakeLists.txt 文件的建立和构成:vs code中新建“CMakeLists.txt”注意大小写和Lists的拼写

CMake编译总结

文件构成包括:

(1)项目名称: 使用 project() 命令定义项目的名称。

(2)源代码文件: 使用 add_executable() 或 add_library() 命令指定需要编译的源代码文件。

(3)头文件搜索路径: 使用 include_directories() 命令指定头文件的搜索路径。

(4) 需要链接的库: 使用 target_link_libraries() 命令指定需要链接的库。

(5) 编译选项: 使用 add_compile_options() 命令添加编译选项。

(6) 其他构建规则: 例如,自定义命令、安装规则等。

4. CMakeLists.txt 的基本语法

CMakeLists.txt 是使用一种简单的、基于命令的语法。

(1)CMakeLists.txt 的核心是命令。命令是 CMake 提供的预定义函数,用于执行特定的构建任务。命令的格式: command_name(argument1 argument2 …)。而且命令名称大小写不敏感,但是,为了代码的可读性,提议使用小写字母。

(2)可以在 CMakeLists.txt 中使用变量存储字符串值。使用 set() 命令定义变量,使用 ${} 来引用变量的值。CMake 中的变量都是字符串类型。当然,CMake 提供了一些内置变量,用于获取项目信息、系统信息等。例如:

  • CMAKE_SOURCE_DIR: 项目的根目录。CMAKE_BINARY_DIR: 构建目录。CMAKE_CXX_COMPILER: C++ 编译器的路径。

(3)注释用于在 CMakeLists.txt 中添加说明文字,不会被 CMake 执行。使用 # 符号开始的行都是注释。

(4)语法规则:命令的参数使用空格分隔。换行 可以使用反斜杠 来进行换行。使用双引号 ” 来定义包含空格的字符串。使用分号 ; 来定义列表。

下面举例说明

# 设置 CMake 的最低版本要求(可用通过CMake—version 命令查看版本号)
cmake_minimum_required(VERSION 3.8)
# 定义项目名称
project(HelloWorld)
# 定义源代码文件
set(SOURCE_FILES main.cpp utill.cpp)
# 添加可执行文件
add_executable(learn_cmake hello_world.cpp)
# 打印消息
message(STATUS “The Building project ${PROJECT_NAME}”)

5.一个简单的例子hello_world.cpp

编写一个简单的c++程序

CMake编译总结

建立CMakeLists.txt文件

CMake编译总结

Cmake_minmum_required(VERSION 3.8) 指定最低版本要求

Project(HelloWorld)定义项目名称、版本、描述等基本信息

Add _executable(learn_cmake hello_world.cpp)定义一个可执行文件和源代码

编写完成记得保存

下面将CMakeLists.txt文件转换成Makefile,Makefile文件可用被make命令读取并进行编译。

打开VS code的终端输入 cmake . 命令,cmake命令用于构建CMakeLists.txt,后面的参数“.”表明CMakeLists.txt在当前同级目录搜索CMakeLists.txt文件。如上图所示执行结果。

然后输入make

CMake编译总结

CMake编译总结

CMake编译总结

输入cmake –help查看协助

CMake编译总结

最后,欢迎大家留言讨论,祝福大家学有所成,学有所用,学习愉快!

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
随机推荐
  • 暂无相关文章
  • 评论 抢沙发

    请登录后发表评论

      暂无评论内容