CMakeLists.txt 是 CMake 的配置文件,用于定义项目的构建规则、依赖关系、编译选项等。
每个 CMake 项目通常都有一个或多个 CMakeLists.txt 文件。
CMakeLists.txt 文件使用一系列的 CMake 指令来描述构建过程。常见的指令包括:
1、指定 CMake 的最低版本要求:
cmake_minimum_required(VERSION <version>)
例如:
cmake_minimum_required(VERSION 3.10)
2、定义项目的名称和使用的编程语言:
project(<project_name> [<language>...])
例如:
project(MyProject CXX)
3、指定要生成的可执行文件和其源文件:
add_executable(<target> <source_files>...)
例如:
add_executable(MyExecutable main.cpp other_file.cpp)
4、创建一个库(静态库或动态库)及其源文件:
add_library(<target> <source_files>...)
例如:
add_library(MyLibrary STATIC library.cpp)
5、链接目标文件与其他库:
target_link_libraries(<target> <libraries>...)
例如:
target_link_libraries(MyExecutable MyLibrary)
6、添加头文件搜索路径:
include_directories(<dirs>...)
例如:
include_directories(${PROJECT_SOURCE_DIR}/include)
7、设置变量的值:
set(<variable> <value>...)
例如:
set(CMAKE_CXX_STANDARD 11)
8、设置目标属性:
target_include_directories(TARGET target_name [BEFORE | AFTER] [SYSTEM] [PUBLIC | PRIVATE | INTERFACE] [items1...])
例如:
target_include_directories(MyExecutable PRIVATE ${PROJECT_SOURCE_DIR}/include)
9、安装规则:
install(TARGETS target1 [target2 ...] [RUNTIME DESTINATION dir] [LIBRARY DESTINATION dir] [ARCHIVE DESTINATION dir] [INCLUDES DESTINATION [dir ...]] [PRIVATE_HEADER DESTINATION dir] [PUBLIC_HEADER DESTINATION dir])
例如:
install(TARGETS MyExecutable RUNTIME DESTINATION bin)
10、条件语句 (if, elseif, else, endif 命令)
if(expression) # Commands elseif(expression) # Commands else() # Commands endif()
例如:
if(CMAKE_BUILD_TYPE STREQUAL "Debug") message("Debug build") endif()
11、自定义命令 (add_custom_command 命令):
add_custom_command( TARGET target PRE_BUILD | PRE_LINK | POST_BUILD COMMAND command1 [ARGS] [WORKING_DIRECTORY dir] [COMMAND command2 [ARGS]] [DEPENDS [depend1 [depend2 ...]]] [COMMENT comment] [VERBATIM] )
例如:
add_custom_command( TARGET MyExecutable POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo "Build completed." )
一个简单的 CMakeLists.txt 文件示例:
CMake 使用变量来存储和传递信息,这些变量可以在 CMakeLists.txt 文件中定义和使用。
变量可以分为普通变量和缓存变量。
定义变量:
set(MY_VAR "Hello World")
使用变量:
message(STATUS "Variable MY_VAR is ${MY_VAR}")
缓存变量存储在 CMake 的缓存文件中,用户可以在 CMake 配置时修改这些值。缓存变量通常用于用户输入的设置,例如编译选项和路径。
定义缓存变量:
set(MY_CACHE_VAR "DefaultValue" CACHE STRING "A cache variable")
使用缓存变量:
message(STATUS "Cache variable MY_CACHE_VAR is ${MY_CACHE_VAR}")
CMake 可以通过 指令自动检测和配置外部库和包。
常用于查找系统安装的库或第三方库。
基本用法:
find_package(Boost REQUIRED)
指定版本:
find_package(Boost 1.70 REQUIRED)
查找库并指定路径:
find_package(OpenCV REQUIRED PATHS /path/to/opencv)
使用查找到的库:
target_link_libraries(MyExecutable Boost::Boost)
设置包含目录和链接目录:
include_directories(${Boost_INCLUDE_DIRS}) link_directories(${Boost_LIBRARY_DIRS})
假设你想在项目中使用 Boost 库,CMakeLists.txt 文件可能如下所示:
通过上述内容,用户可以了解 CMakeLists.txt 文件的基本结构和常用指令,掌握如何定义和使用变量,查找和配置外部库,从而能够有效地使用 CMake 管理项目构建过程。
到此这篇cmake 菜鸟教程(cmake菜鸟教程官网)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-yfwjc/49334.html