首页 > 其他分享 >【cmake】关于cmake链接库的顺序要求

【cmake】关于cmake链接库的顺序要求

时间:2024-08-15 15:52:54浏览次数:9  
标签:顺序 cmake target 链接库 libraries add link 链接

注意注意:
在CMake中,你可以使用 target_link_libraries 命令来指定链接顺序。这个命令接受一个目标(target)和一系列库(库可以是库目标、库文件路径或导入的库目标)作为参数。链接顺序通常很重要,特别是当库之间存在依赖关系时。

cmake_minimum_required(VERSION 3.10)
project(MyProject)

# 假设我们有三个库:libA, libB, 和 libC
# 这里我们创建一个示例目标,实际情况下可能是可执行文件或库目标

# 添加库目标
add_library(A STATIC a.cpp)
add_library(B STATIC b.cpp)
add_library(C STATIC c.cpp)

# 假设 libA 依赖于 libB,libB 依赖于 libC
# 在这种情况下,链接顺序很重要

# 创建可执行文件
add_executable(MyApp main.cpp)

# 指定链接顺序
target_link_libraries(MyApp
    PRIVATE
        C
        B
        A
)

# 如果你有系统库或第三方库,也可以这样链接
# target_link_libraries(MyApp
#     PRIVATE
#         /path/to/system_lib1.lib
#         /path/to/system_lib2.lib
# )

在这个例子中,target_link_libraries 命令的参数列表中,MyApp 是目标,PRIVATE 是指定链接作用域的关键字(可以是 PUBLICPRIVATEINTERFACE),后面跟着一系列库。链接顺序是 CBA,这反映了它们之间的依赖关系。

链接顺序通常遵循依赖关系,即依赖于其他库的库应该在被依赖的库之后列出。如果库之间没有依赖关系,链接顺序可能不那么重要,但最好保持一致的顺序以避免混淆。

标签:顺序,cmake,target,链接库,libraries,add,link,链接
From: https://blog.csdn.net/qq_37286579/article/details/141224479

相关文章

  • 【CMake】掌握CMake基本操作
    @目录1.文件树和CMakeLists.txt一览1.1语法基本规则1.2文件目录讲解2.基本指令讲解2.1CMAKE_MINIMUM_REQUIRED(VERSIONXXX)2.2PROJECT(projectname)2.3SET()2.4ADD_SUBDIRECTORY(srcbin)2.5INCLUDE_DIRECTORIES(lib/)2.6ADD_EXECUTABLE(mainmain.cpp)2.7ADD_LIBRARY(......
  • 不依靠for循环,Python如何对列表进行去重并保留排列顺序
    在python中,我们想要从列表中删除重复元素,并且保留去重之前的先后排列顺序。在这里,我们本文不谈论for循环,我们来谈论其他的更优方法——OrderedDict和set。要知道,OrderedDict可以通过保留插入顺序来实现元素去重;而set集合,则可以直接去除列表中的重复元素。需要注意的是,我们的......
  • 40、Python之面向对象:扩展的对象属性解析顺序(描述符 + MRO)
    引言在上一篇文章中,我们简单回顾了Python中在继承语境下的属性解析顺序,同时补充了能够控制、影响属性解析的3个函数/方法(2个魔术方法+1个内置函数),相信对Python中属性的解析,相较于MRO,有了更进一步的认识。今天这篇文章中,我们将考虑属性描述符存在的情况下,对于Python中的属性......
  • java使用动态链接库读取Fanuc设备,在linux环境部署时报错:FOCAS2 log file is not found
    在linux环境中,使用java调用动态链接库的方式读取Fanuc,报错“FOCAS2logfileisnotfound”解决办法linux环境使用cnc_allclibhndl3之前,需要先使用cnc_startupprocess启用并指定日志文件,否则会报错:"FOCAS2logfileisnotfound"。会包含cnc_startupprocess,windows的dll库......
  • 顺序结构与选择结构
    顺序结构从上到下依次执行,是由若干个依次执行的处理步骤组成的,他是任何一个算法都离不来的基本算法结构。packagecom.yang.struct;publicclassShunXuDemo{publicstaticvoidmain(String[]args){System.out.println("hello1");System.out.print......
  • 知识改变命运 数据结构【顺序表】
    1.线性表线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组......
  • 视觉SLAM ch3补充——在Linux中配置VScode以及CMakeLists如何添加Eigen库
            ch3中的所有代码,除了在kdevelop中运行,还可以在VScode中运行。下面将简要演示配置过程,代码不再做解答,详细内容在下面的文章中。(这一节中的pangolin由于安装过程中会出现很多问题,且后续内容用不到该平台,所以暂时不进行安装)视觉SLAMch3—三维空间的刚体运动http......
  • 【数据结构】详细介绍线性表中的顺序表,带你复盘实现细节,附上顺序表编程练习题
    目录一.线性表二.顺序表 1.静态顺序表与动态顺序表2.动态顺序表的接口实现 2.1顺序表初始化 2.2判断是否需要扩容  2.3 顺序表指定位置插入2.4 顺序表头插2.5 顺序表尾插2.6 顺序表指定位置删除2.7 顺序表头删2.8 顺序表尾删2.9 顺序表查找2.1......
  • 顺序结构
    定义与特点定义顺序结构就是程序运行时自上而下的依次执行我们所写的代码,直到执行完所有语句。在C语言、Java等编程语言中,顺序结构都是程序设计的基础。特点线性执行:程序中的语句按照它们在代码中的顺序,从上到下依次执行。无跳转:在顺序结构中,不存在跳转到其他语句或模块执......
  • 线程执行顺序 join()
    importlombok.SneakyThrows;importjava.util.concurrent.TimeUnit;publicclassT{@SneakyThrowspublicstaticvoidmain(String[]args){Objecto=newObject();Threadthread1=newThread(()->{try{......