下面将详细讲解CMake语法及CMakeList.txt简单使用小结。
1. 什么是CMake
CMake是一个跨平台开源工具,可以自动生成用于各种编译器的makefile文件。
2. CMake语法
CMake语法采用命令模式,每个命令都由一个大写字母的关键字加上参数构成,可用的关键字很多,这里仅列举常用命令:
ADD_EXECUTABLE:添加可执行文件
ADD_LIBRARY:添加库文件
SET:设置变量
INCLUDE_DIRECTORIES:添加头文件搜索路径
LINK_DIRECTORIES:添加库文件搜索路径
TARGET_LINK_LIBRARIES:链接库文件
3. CMakeList.txt格式
CMake通常使用一个名为CMakeLists.txt的文件来管理构建过程。这个文件包含命令和常量等,其基本架构为:
command(argument1 argument2 argument3 ...)
4. CMakeList.txt示例
示例1:生成可执行文件
以下是一个简单的CMakeList.txt,用于编译一个hello world程序,并生成可执行文件
cmake_minimum_required(VERSION 3.0)
# 设置项目名称
project(myproject)
# 添加(executable)可执行文件
add_executable(hello src/hello.cpp)
-
cmake_minimum_required(VERSION 3.0):CMake的版本需不低于3.0。
-
project(myproject):设置项目名称为myproject。
-
add_executable(hello src/hello.cpp):将src目录下的hello.cpp编译为可执行文件hello。
最后,在工作目录下执行以下命令:
cmake .
make
./hello
便可以得到hello world的输出。
示例2:生成静态库和动态库
以下是一个CMakeList.txt,用于生成一个静态库和一个动态库
cmake_minimum_required(VERSION 3.0)
# 设置项目名称
project(myproject)
# 添加子目录
add_subdirectory(src)
# 生成动态库
add_library(mystatic STATIC src/hello.cpp)
add_library(mydynamic SHARED src/hello.cpp)
# 链接动态库
target_link_libraries(mydynamic mystatic)
-
add_subdirectory(src):添加子目录,这里的src目录是一个源代码目录。
-
add_library:分别生成静态库和动态库。静态库需要在后面添加 STATIC 标记,动态库则是 SHARED。
-
target_link_libraries(mydynamic mystatic):将动态库mydynamic链接到静态库mystatic。
最后,在工作目录下执行以下命令:
cmake .
make
将会得到libmystatic.a和libmydynamic.so两个库文件。
5. 小结
通过本文,可以了解到CMake格式和语法,以及如何使用CMakeList.txt文件来管理项目构建过程,通过示例也可以帮助更好的掌握CMake的用法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CMake语法及CMakeList.txt简单使用小结 - Python技术站