linux-cmake常用指令

本文介绍了CMake在构建库和设置编译选项方面的用法,包括add_library创建OBJECT库、include_directories添加头文件路径、file进行文件搜索、set_property设置目标属性以及POSITION_INDEPENDENT_CODE用于生成位置无关代码,适用于动态库的编译。通过实例展示了如何使用这些命令来优化CMake构建过程。

object library
add_library(<name> OBJECT <src>...)
库的类型固定为OBJECT,这种库编译了源文件,但不链接。实际中没用过,没有仔细研究。

add_library(tfhe-core OBJECT ${SRCS} ${TFHE_HEADERS})

include_directories ([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径。

include_directories("include")

使用file来把要添加的头文件找到,比如,我在includeTest工程的文件夹里面新建了testheader.h文件,这么写

file(GLOB ALLHEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)

这样就把当前工程文件夹里面所有的 .h 文件都放到了 ALLHEADERS 当中

file(GLOB TFHE_HEADERS include/*.h)

set_property() 命令

在给定范围内设置一个对象的属性。

命令格式:

set_property(<GLOBAL                      |
              DIRECTORY [<dir>]           |
              TARGET    [<target1> ...]   |
              SOURCE    [<src1> ...]
                        [DIRECTORY <dirs> ...]
                        [TARGET_DIRECTORY <targets> ...] |
              INSTALL   [<file1> ...]     |
              TEST      [<test1> ...]     |
              CACHE     [<entry1> ...]    >
             [APPEND] [APPEND_STRING]
             PROPERTY <name> [<value1> ...])
 
 # 其基本格式为:
 set_property(<Scope> [APPEND] [APPEND_STRING] PROPERTY <name> [value...])

第一个参数必须是属性的范围(Scope),后面 [APPEND | APPEND_STRING] 可选,表示属性是可扩展的列表。PROPERTY 是标识,后面接属性名称<name>,其值可选。

get_property() 命令

获取属性的值。

get_property(<variable>
             <GLOBAL             |
              DIRECTORY [<dir>]  |
              TARGET    <target> |
              SOURCE    <source>
                        [DIRECTORY <dir> | TARGET_DIRECTORY <target>] |
              INSTALL   <file>   |
              TEST      <test>   |
              CACHE     <entry>  |
              VARIABLE           >
             PROPERTY <name>
             [SET | DEFINED | BRIEF_DOCS | FULL_DOCS])

<variable> : 保存属性值的变量

GLOBAL/DIRECTORY ... /VARIABLE : 表示属性对应的范围,与 set_property() 相同,额外的 VARIABLE 表示范围是唯一的,不接受名称。

PROPERTY <name> : 属性名,同 set_property()

SET | DEFINED | BRIEF_DOCS | FULL_DOCS : 可选参数

  • SET : 将变量设置为布尔值,指示是否已设置属性;
  • DEFINED : 将变量设置为布尔值,指示属性是否已被定义
  • BRIEF_DOCS | FULL_DOCS : 如果给定了 Brief_DOCS 或 FULL_DOCS,则将变量设置为包含所请求属性的文档的字符串。

版权声明:本文为优快云博主「翔底」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/rangfei/article/details/126051723

set_property(TARFET tfhe-core PROPERTY POSITION_INDEPENDENT_CODE ON)

使用的是tfhe-core

set(POSITION_INDEPENDENT_CODE True)

position-independent code (PIC) 编译动态库 .so

position-independent code (PIC):用于生成位置无关代码。位置无关代码,可以理解为代码无绝对跳转,跳转都为相对跳转。

TARGET_LINK_LIBRARIES (设置要链接的库文件的名称)

参考文章:

CMake添加头文件_無負今日的博客-优快云博客_cmake 添加头文件

Cmake命令之include_directories介绍_物随心转的博客-优快云博客_cmake include_directories

https://blog.youkuaiyun.com/FL1623863129/article/details/120968092?ops_request_misc=&request_id=&biz_id=102&utm_term=add_library(tfhe-core%20OBJECT%20$&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-120968092.142^v41^control,185^v2^control&spm=1018.2226.3001.4187

cmake(14):利用set_property命令设置全局属性_翔底的博客-优快云博客_cmake 全局变量

cmake:POSITION_INDEPENDENT_CODE_OceanStar的学习笔记的博客-优快云博客

Documentation | CMake

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值