首页 > 其他分享 >CMake实践(二)

CMake实践(二)

时间:2022-12-21 13:35:36浏览次数:72  
标签:ld CMake gold 实践 FLAGS https world hello


  1. fPIC
add_compile_options(-fPIC)

​大概意思是缺少 -fPIC 这个编译参数​​​​https://cxyzjd.com/article/winafa/114847300​

  1. -fuse-ld=gold
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=gold")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")

-fuse-ld = gold标志指示应使用黄金链接器。
gold是Google的链接器:
​​​https://en.wikipedia.org/wiki/Gold_(linker)​​​ 关于c++ - '-fuse-ld=gold’标志的目标是什么?,我们在Stack Overflow上找到一个类似的问题: ​​https://stackoverflow.com/questions/49954519/​​ The -fuse-ld=gold flag indicates that the gold Linker should be used. gold is a Linker from Google:
​https://en.wikipedia.org/wiki/Gold_(linker)​

  1. add_subdirectory
add_subdirectory(thirdparty/opencv)

​https://www.jianshu.com/p/07acea4e86a3​​​​add_subdirectory (source_dir [binary_dir] [EXCLUDE_FROM_ALL])​​ 添加一个子目录并构建该子目录。

  1. CMAKE_CXX_FLAGS 相关参数
CMAKE_CXX_FLAGS

​http://www.jackieathome.net/archives/796.html​

  1. CMake 中用到的PUBLIC,PRIVATE,INTERFACE之间的区别。
    这里我用一个比喻,最外层要调用的文件是hello-word.cpp,以cpp结尾的是男的,以.h结尾的是女的。子文件下的文件就是孩子,其中.cpp是儿子,.h结尾的是儿媳。.so 就是伴读书童。CMakeLists.txt就是家规。
  2. PRIVATE
target_include_directories(${TARGET} PRIVATE
${generate_mfr_INCLUDE_DIRS}
${MFR_CPP_STRUCT_CONVERT_INCLUDE_DIR})

PRIVATE:私有的。生成 libhello-world.so时,只在 hello_world.c 中包含了 hello.h,libhello-world.so 对外的头文件——hello_world.h 中不包含 hello.h。而且 main.c 不会调用 hello.c 中的函数,或者说 main.c 不知道 hello.c 的存在,那么在 hello-world/CMakeLists.txt 中应该写入:
target_link_libraries(hello-world PRIVATE hello)
target_include_directories(hello-world PRIVATE hello)

通俗的讲,就是自己的直接调用的兄弟用到了小弟,自己却不知道小弟的存在,就在PRIVATE中加入小弟的名字,表示他的存在

  1. INTERFACE
target_link_libraries(${PROJECT_NAME} INTERFACE pointcloud_mask)

​https://zhuanlan.zhihu.com/p/82244559​


标签:ld,CMake,gold,实践,FLAGS,https,world,hello
From: https://blog.51cto.com/u_12606187/5959828

相关文章

  • 云原生安全系列3:5个 Kubernetes API 网络安全访问最佳实践
    Kubernetes中的API访问控制会经历三个步骤。首先,对请求进行身份验证,然后检查请求的有效授权,然后执行请求准入控制,最后授予访问权限。但在身份验证过程开始之前,确保正确配......
  • 基于贝叶斯网(Bayes Netword)图模型的应用实践初探
    基于贝叶斯网(BayesNetword)图模型的应用实践初探1.贝叶斯网理论部分笔者在另一篇​​文章​​中对贝叶斯网的理论部分进行了总结,在本文中,我们重点......
  • 公有云降本增效最佳实践
    前言最近看到了几个事情,一个是某保险系统,为了快速上线,全量上云,结果生产正式运行后每月账单高达几十万。相关业务总扛不住这个支出,又劳师动众,让下面的项目经理、开发、运维......
  • 分布式注册服务中心etcd在云原生引擎中的实践
    作者:王雷etcd是什么etcd是云原生架构中重要的基础组件,由CNCF孵化托管。ETCD是用于共享配置和服务发现的分布式,一致性的KV存储系统,是CoreOS公司发起的一个开源项目,授权协......
  • windows--cmake与c++的使用教程(15)
    windows--cmake与c++的使用教程(15)1概述本文基于前文环境本节目标:target_link_libraries为项目链接动态库2target_link_libraries作用常用于链接给定目标或者......
  • 吃透JAVA的Stream流操作,多年实践总结
    在JAVA中,涉及到对数组、Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行处理。例如,现在有这么一个需求:从给定句子......
  • Jenkins实践指南-08-Jenkins 凭证管理
    4.Jenkins凭证管理  [作者:Surpassme]随着网络环境的变化,如果在Jenkins中使用明文密码会造成一些安全隐患。为此Jenkins也提供凭证管理功能,本章节来系统学习一下。4......
  • 关于播放器的一次项目实践~~
    众所周知,前段时间开通了知识星球,旨在为音视频的开发和学习提供更专业的问答氛围。​​一个关于音视频领域专业问答的小圈子!!​​同时也考虑在星球内出一些干货教程,回馈大家的......
  • Iceberg在袋鼠云的探索及实践
    “数据湖”、“湖仓一体”及“流批一体”等概念,是近年来大数据领域热度最高的词汇,在各大互联网公司掀起了一波波的热潮,各家公司纷纷推出了自己的技术方案,其中作为全链路数......
  • PyTorch 深度学习实践第一讲
    写在前面:B站刘二大人 传送门​​Pytorch深度学习实践第一讲​​预备知识线性代数和概率论与数理统计(至少知道分布)Python(了解面向对象、类)引言:HumanIntelligence推理能力......