首页 > 其他分享 >cmake的几个常用语法整理

cmake的几个常用语法整理

时间:2022-11-24 22:03:15浏览次数:67  
标签:libraries 常用 cmake target library 语法 add link find


1、​​find_library​​ 寻找库此命令用于查找库。<VAR>创建名为的缓存条目以存储此命令的结果。如果找到库,则结果存储在变量中,除非清除变量,否则不会重复搜索。如果找不到任何内容,结果将是 <VAR>-NOTFOUND,并且下次使用相同变量调用find_library时将再次尝试搜索。

find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log )

寻找log 存储为​​log-lib​​​变量​​https://cmake.org/cmake/help/v3.6/command/find_library.html​​ 其它find_也类似

2、​​target_link_libraries​​​ 链接库 也就是把当前库和其他库合并​​link_libraries​​ 链接静态库 通常做导入操作,很少用到

3、​​add_library​​​ 添加库 同时是把源码合并生成一个动态库名
通常执行add_library之后调用​​target_link_libraries​​ 4、​​include_directories​​ 添加头文件目录
5、​​add_subdirectory​​添加cmake目录
6、​​set_target_properties​​ 可以把一个静态库变成一个变量然后通过
7、​​target_link_libraries​​合并

8、​​find_path​​​ 9、​​find_package​​ 10、​​aux_source_directory(directory varname)​​ 添加多个c++’文件 参数1为目录名,2为变量名, 就是把多个东西融合为一个变量,也可以用​​.​​融合当前所有。

使用本地文件静态库举例

#[[
include_directories(otheheadfile) #这个源文件和另外一个文件的根目录不是同一个,也可以达到识别效果。

file(GLOB SRCS "${PROJECT_SOURCE_DIR}/jni/global/*.cpp")
add_executable(callstatic callstatic.c)
add_library(mystatic
STATIC
IMPORTED)
set_target_properties(mystatic
PROPERTIES IMPORTED_LOCATION
${PROJECT_SOURCE_DIR}/lib/libmystatic.a)
target_link_libraries(callstatic mystatic)
message("compile call staticlib.... c use c static lib")
message("------------------------------------------------")

]]

使用cmake产生的静态库举例

假设cmake中有一句话

add_library(qssqstatic STATIC xxxx)

那么执行的话是

set_target_properties(qssqstatic PROPERTIES OUTPUT_NAME "qssqstatic")
target_link_libraries(wxplus2 qssqstatic )

这里​​wxplus2​​​就是动态库或者可执行文件,而​​qssqstatic​​​是​​add_library​​产生的静态库

使用动态库举例

#[[
include_directories(otheheadfile)

file(GLOB SRCS "${PROJECT_SOURCE_DIR}/jni/global/*.cpp")
add_executable(ccallcdynamic calldynamic.c)

# static need set_target_properties() but dynamic not need
link_directories(lib)#从 lib目录查找
# 设置第三方动态库属性(存储位置) armeabi-v7a
add_library(MYDYNAMIC
SHARED
IMPORTED)

set_target_properties(MYDYNAMIC PROPERTIES IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/libmydynamic.so)
target_link_libraries(ccallcdynamic MYDYNAMIC)


message("compile ccallcdynamic ....")
message("------------------------------------------------")
]]

更多举例参考我github源码


标签:libraries,常用,cmake,target,library,语法,add,link,find
From: https://blog.51cto.com/u_15458814/5885104

相关文章

  • MySQL数据库:6、约束的概述及语法
    Python基础之MySQL数据库目录Python基础之MySQL数据库一、约束概述1、为什么要约束2、什么是约束3、约束的分类4、查看当前表已有的约束二、约束语法及用法1、无符号2、......
  • swagger2的常用注解,传递参数的注意使用方法
    背景介绍:刚开始的时候,在controller层使用@RequestParam的时候,发现这个参数是必须要输入值的,但是我们有时候必须查询的时候允许参数为空,使用这个注解就不行了。在集成了swagg......
  • linux基础 | 基础介绍、目录、操作系统命令、用户管理、常用指令
    1、Linux目录知识Linux在根目录下有很多目录都是规定好的,比如etc里面是配置信息,boot是启动时用到的文件Linux会把计算机的硬件映射成一个文件来管理在Linux里面一切皆是......
  • Docker常用命令整理实例-全
    笔记来自:​​https://pan.baidu.com/s/1FLcOpjpJTJlP36lzD-kfWA#list/path=%2F​​帮助命令dockerversiondockerinfodocker--help镜像命令dockerimages列出本地主机......
  • groovy语法校验和沙盒(sandbox)运行
    groovy语法校验主要解决脚本在编写时能实时检查语法是否正确,类似IDE的功能,沙盒运行主要解决系统若嵌入System.exit(0),会导致整个应用停掉的问题需要引用的依赖包如下:<!--ht......
  • Kubernetes(K8S) 常用命令
    Docker常用命令Docker常用命令#查看API版本[root@k8smaster~]#kubectlapi-versions#重启K8S[root@k8smaster~]#systemctlrestartkubelet#查看kubelet......
  • Java常用数据结构
    1、数组数组(Array) 是一种很常见的数据结构。它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储。我们直接可以利用元素的索引(index)可以计算出该元......
  • 【JAVA笔记】JAVA常用的字符串操作03
    一、Java中常用的字符串操作publicclassCommon_String_Operations{publicstaticvoidmain(String[]args){booleanp1=isEmpty("aa");S......
  • java常用类中Calendar【日历】
    Calendar类Calendar:它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方......
  • Dayjs常用获取日期方法
    1.获取当天的日期dateFormat(dayjs().endOf('day'));2.获取当前周的起止日期constoneDayTime=24*60*60*1000;consttime=dayjs().endOf('week')......