三、cmake常用函数
创始人
2024-03-29 10:00:30
0

1、add_library

创建库
add_library是cmake中最重要的一个函数,其功能是使用指定的源文件向工程中创建链接文件一般是库,用法格式如下:

add_library( [STATIC | SHARED | MODULE][EXCLUDE_FROM_ALL][source1] [source2 ...])

name:库的名字
STATIC(静态库)/SHARED(动态库)/MODULE(模块库)之一:指定动态库的类型

添加的库会被输出到以下几个目录
ARCHIVE_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_DIRECTORY和 RUNTIME_OUTPUT_DIRECTORY,详见cmake 常用设定及函数
设置EXCLUDE_FROM_ALL,可使这个library排除在all之外,即必须明确点击生成才会生成。

导入库

add_library(  IMPORTED[GLOBAL])

这种用法可以直接导入已经生成的库,cmake不会给这类library添加编译规则。
这种用法的关键在于添加变量IMPORTED。
另外,GLOBAL可用于设置这个library为全局可见。
imported的library,其属性以IMPORTED_开头,导入库的几个重要属性如下:

  1. IMPORTED_LOCATION:标明library在硬盘上的位置,可以用更具体的IMPORTED_LOCATION_的标注,其中的可以是DEBUG/RELEASE或其他
  2. IMPORTED_OBJECTS:标明对象library在硬盘上的位置,相应的有IMPORTED_OBJECTS_来标识具体编译类型
  3. PUBLIC_HEADER:如果install这个library的话,这个值保存头文件的目录

2、set_target_properties

为一个目标设置属性。该命令的语法是列出所有你想要变更的文件,然后提供你想要设置的值。你能够使用任何你想要的属性/值对,并且在随后的代码中调用GET_TARGET_PROPERTY命令取出属性的值。

set_target_properties(target1 target2 ...PROPERTIES prop1 value1prop2 value2 ...)

举例设置共享库的路径:

set_target_properties(	Thirdlib PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/jniLibs/libThirdlib.so
)

3、include_directories

cmake使用 include_directories是用来 提供搜索头文件路径
cmake本身不提供任何搜索库的便捷方法,所有搜索库并给变量赋值的操作必须由cmake代码完成

4、link_directories

该指令的作用主要是指定要链接的库文件的路径,该指令有时候不一定需要。因为find_package和find_library指令可以得到库文件的绝对路径。不过你自己写的动态库文件放在自己新建的目录下时,可以用该指令指定该目录的路径以便工程能够找到。

link_directories( ${PROJECT_PATH}/lib )

5、target_link_libraries

该指令的作用为将目标文件与库文件进行链接。该指令的语法如下:

target_link_libraries( [item1] [item2] [...][[debug|optimized|general] ] ...)

上述指令中的是指通过add_executable()和add_library()指令生成已经创建的目标文件。而[item]表示库文件没有后缀的名字。默认情况下,库依赖项是传递的。当这个目标链接到另一个目标时,链接到这个目标的库也会出现在另一个目标的连接线上。这个传递的接口存储在interface_link_libraries的目标属性中,可以通过设置该属性直接重写传递接口。

link_libraries用在add_executable之前,target_link_libraries用在add_executable之后,link_libraries用来链接静态库,target_link_libraries用来链接导入库

相关内容

热门资讯

50余位法律人晨跑椰城 共话专... 人民网海口12月28日电 (记者李学山)12月27日清晨7时30分,海口红城湖畔晨雾缭绕,随着一声“...
男子因纠纷引燃易燃物品致本人死... 12月28日,成都市公安局高新区分局发布警情通报: 12月28日下午,高新区南三环路四段一汽车销售服...
茅台称尽最大努力防止价格炒作,... 备受关注的茅台2026年全国经销商联谊会于12月28日下午举行。2025年在经历了换帅,一年内飞天茅...
原创 清... 1911年10月10日晚,武昌城头的枪声划破夜空。起义军用的两众枪,是从湖北新军军械库里抢来的;而对...
无锡律师行业前景与老律师经验传... 在无锡、常州、苏州、镇江、南通等地,律师行业正展现出蓬勃的发展态势,无锡律师行业前景更是备受瞩目。随...
南京市廉政文化研究会应邀赴西安... 扬子晚报网12月28日讯(通讯员 杨雅舒 邵加宝 记者 闫春旭)12月28日,由陕西省廉政文化研究会...
北京放宽购房门槛,优化住房信贷...   为更好满足居民刚性和多样化改善性住房需求,北京进一步优化调整房地产相关政策。   12月24日,...
刘百奇:政策与市场双轮驱动——... 12月28日,由创业黑马主办的“第17届创业家年会”在北京举办,年会主题为“智业革命 —— 跨越断层...
原创 郑... 自从被曝与前夫张恒在国外合开代孕机构之后,郑爽突然又活跃了起来,舆论都过去了,以郑爽名义成立的几个账...
成都警方通报燃爆事件:段某因纠... 2025年12月28日,成都市公安局高新区分局发布警情通报: 来源:成都公安