【记那些年我们链不明白的青春】Cmake常用函数一文总结
1|0前言
以一个简短且好理解的方式记录一下常用Cmake的函数,区别于网上的那些抄来抄去。废话少,全精华。
2|0link_directories
是对于 .so 文件的
函数作用:添加一个.so库文件的搜索路径 使得链接的时候直接在后面添加库的名称可以被找得到
(比如liberal.so 库的名称即为gdal而不是全称)
3|0target_link_libraries
...放的即是上面说到的库的名称
函数作用:将...(可以多个)全部链接到PROJECT_NAME这个东西上 但这里...部分都已经是.so文件了(包括自己生成的.so和已有的.so)
这个函数不仅可以将库文件链接到可执行文件上 也可以将库文件链接到库文件上(串起来 有画面了)
4|0include_directories
函数作用:添加头文件所在路径
不仅是第三方库的头文件 还有自己写的头文件的路径
这个目录直接影响cpp代码中#include的搜索路径
即如果第三方头文件在这里被include了 那么我们自己引用头文件时直接#include 不用添加冗杂的路径
5|0FILE(GLOB_RECURCE MY_SRC ${SRC_PATH}/*.cpp)
函数作用:将SRC_PATH路径下的所有.cpp文件全部用一个名称——MY_SRC代替 相当好用了
6|0add_library(mylib ${MY_SRC})
函数作用:将MY_SRC中的.cpp文件编译成.so库
这里因为没有STATIC 所以是动态库
和上一个结合使用 很方便
7|0add_library(mylib STATIC ${MY_SRC})
函数作用:将MY_SRC中的.cpp文件编译成静态库.a
8|0获取上一级目录
正则表达式 上一级目录保存在PROJECT_PRE_DIR变量中
9|0最后
易混淆的应该都有了 以后遇见更常用的再来更新
10|0install
安装可执行文件
这将安装 my_executable 可执行文件到 bin 目录下。
安装库文件
这将安装 my_library 共享库文件到 lib 目录下,并将静态库文件也安装到 lib 目录下。
安装文件
这将安装文件列表 file1.txt 和 file2.txt 到 data 目录下。
安装目录
这将安装目录 my_directory 到 share 目录下。
参数总结
ARCHIVE:用于静态库文件。
LIBRARY:用于共享库文件(动态库)。
RUNTIME:用于可执行文件。
PUBLIC_HEADER:用于公共头文件。
PRIVATE_HEADER:用于私有头文件。
11|0get_property与set_property
可设置变量名为全局可见:
设置MODULE变量为全局可见
随后在各个子目录中的CMakeLists为MODULE赋值,然后拿取属性:
给变量赋值:
上述示例中,my_global_property属性被设置为全局范围,其值为my_value。
my_list_property属性的值被设置为一个包含"value1"和"value2"的列表。如果目标my_target之前已经有my_list_property属性,那么这些新的值将被追加到已有的列表中。
__EOF__

本文链接:https://www.cnblogs.com/linglingdog/p/17059854.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)