cmake 函数
CMake函数是CMake的一种重要特性,可以大大提高CMake代码的可读性和可维护性,并且更容易实现复杂的功能。它把一组相关的CMake命令捆绑在一起,用一个名字代表,成一个函数,从而可以重复使用。本文将介绍CMake函数的基本概念、使用方法和一些实例。
1. CMake函数的基本概念
CMake函数是CMake的重要功能,它允许定义可重复使用的CMake代码段,这个代码段被一个名字标识,可以被多次调用。它像编程语言中的函数一样,由函数名、参数(可选)和返回值(可选)组成。CMake函数的定义形式是:
function(函数名 [参数] [返回值])
#函数体
endfunction([返回值])
函数名是字符串类型,参数(可选)是变量形式的,返回值(可选)是变量类型的,也可以
是多个变量组成的列表。函数体是由多个CMake命令组成的,可以是一条或多条命令,用来实现函数功能。
2. CMake函数使用方式
CMake函数是CMake提供的可以重复使用的代码段,它不能直接使用,而是需要先定义,然后才能调用;定义和调用都是通过特定的命令进行操作。
(1)义CMake函数
CMake函数通过function命令定义,它需要指定一个函数名和函数体,其中函数体可以是一条或多条CMake命令,可以是一段代码或多段代码;同时可以指定参数和返回值。由定义函数示例:
function(my_func param1 [param2] [RETURN_VALUE])
#数体
#函数体中可以使用${param1}获取参数值
set(${RETURN_VALUE} return value PARENT_SCOPE) #给返回值赋值
endfunction([RETURN_VALUE])
(2)用CMake函数
CMake函数也可以被调用,调用时也需要指定函数名和参数,如果定义了返回值,则还可以指定返回值变量名。示例:
my_func(param1 param2 VAL)
message(${VAL}) #输出return value
3. 一些实例
(1)回指定文件的文件名
有时候,需要在CMake中指定一个源文件,可以用相对路径或绝对路径,但是如果想要获取此文件的文件名,就得使用CMake函数,示例:
function(get_filename_without_ext SRC RETURN_VALUE)
#${SRC}:指定源文件
#${RETURN_VALUE}:返回值变量
get_filename_component(RETURN_VALUE ${SRC} NAME_WE) #取出文件名
endfunction([RETURN_VALUE])
使用示例:
get_filename_without_ext(/src/main.cpp FILE_NAME)
message(${FILE_NAME}) #输出main
(2)现自定义的动态链接库
CMake提供了add_library来创建静态库或动态库。但有时候,你想用自己的方式自定义实现动态库,就需要使用CMake函数。示例:
function(create_shared_lib SRC LIB_NAME)
#${SRC}:指定源文件
#${LIB_NAME}:库的文件名
add_library(${LIB_NAME} SHARED ${SRC})
cmake如何使用 set_target_properties(${LIB_NAME} PROPERTIES OUTPUT_NAME ${LIB_NAME})
set_target_properties(${LIB_NAME} PROPERTIES PREFIX
endfunction()
使用示例:
create_shared_lib(main.cpp libMy
结论
本文介绍了CMake函数的基本概念、使用方法和几个示例,CMake函数可以大大提高CMake代码的可读性和可维护性,也可以用来实现复杂的功能。通过使用CMake函数,开发者可以更加高效地完成自己的工作。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论