cmake常用函数
2023-12-22 18:33:02
在CMake 中,有一些函数是比较常用的,用于执行各种任务。以下是使用频率较高的 20 个 CMake 函数,并对其用法进行简要说明和示例:
-
message
:-
用法: 打印消息到控制台。
-
示例:
message(STATUS "Hello, CMake!")
-
-
project
:-
用法: 定义一个项目,设置项目名称和语言。
-
示例:
project(MyProject CXX)
-
-
add_executable
:-
用法: 添加可执行文件。
-
示例:
add_executable(my_executable source1.cpp source2.cpp)
-
-
add_library
:-
用法: 添加库文件。
-
示例:
add_library(my_library source1.cpp source2.cpp)
-
-
target_link_libraries
:-
用法: 链接目标与库文件。
-
示例:
target_link_libraries(my_executable my_library)
-
-
find_package
:-
用法: 查找并加载外部包。
-
示例:
find_package(Boost REQUIRED COMPONENTS filesystem system)
-
-
include_directories
:-
用法: 添加包含目录。
-
示例:
include_directories(include)
-
-
target_include_directories
:-
用法: 设置目标的包含目录。
-
示例:
target_include_directories(my_executable PUBLIC include)
-
-
add_definitions
:-
用法: 添加预处理器定义。
-
示例:
add_definitions(-DDEBUG)
-
-
set
:-
用法: 设置变量的值。
-
示例:
set(MY_VARIABLE "Hello")
-
-
if
/ **else
/endif
:-
用法: 条件判断。
-
示例:
if(BUILD_TESTS) add_subdirectory(tests) endif()
-
-
foreach
:-
用法: 遍历列表或范围。
-
示例:
foreach(file IN LISTS sources) message(STATUS "Source File: ${file}") endforeach()
-
-
file
:-
用法: 文件操作相关命令。
-
示例:
file(GLOB sources src/*.cpp)
-
-
add_subdirectory
:-
用法: 添加子目录。
-
示例:
add_subdirectory(lib)
-
-
option
:-
用法: 添加用户选项。
-
示例:
option(BUILD_TESTS "Build tests" ON)
-
-
configure_file
:-
用法: 配置文件生成。
-
示例:
configure_file(config.h.in config.h)
-
-
add_dependencies
:-
用法: 添加目标的依赖项。
-
示例:
add_dependencies(my_executable my_library)
-
-
target_compile_features
:-
用法: 指定目标的语言特性。
-
示例:
target_compile_features(my_executable PRIVATE cxx_std_11)
-
-
install
:-
用法: 安装目标文件。
-
示例:
install(TARGETS my_executable DESTINATION bin)
-
-
get_target_property
:-
用法: 获取目标属性的值。
-
示例:
get_target_property(MY_LIB_INCLUDE_DIRS my_library INCLUDE_DIRECTORIES) message(STATUS "Include Directories: ${MY_LIB_INCLUDE_DIRS}")
-
这些函数是在CMake项目中经常使用的一些基本函数。具体的用法和参数取决于项目的需求和结构。
文章来源:https://blog.csdn.net/weixin_43739167/article/details/135157652
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!