首页 > 其他分享 >CMake中里的find_package与find_library有什么区别?

CMake中里的find_package与find_library有什么区别?

时间:2024-05-06 17:00:41浏览次数:18  
标签:CMake 配置文件 package library Boost find

在CMake中,find_packagefind_library都是用来找到和链接库的方法,但它们的用法和适用场景略有不同。

find_package主要用于寻找具有CMake配置文件的库,这些库通常遵循CMake的规范,提供了用于导入目标、库路径、头文件路径等的配置文件。这使得使用find_package更加简洁,只需指定需要的组件即可自动处理头文件路径、库路径等。find_package更适合于较大、更复杂的库,如Boost。在找到库后,find_package会生成相关的导入目标(如Boost::filesystem)供你在target_link_libraries中使用。

find_library则是一个更基本的方法,用于在系统中搜索特定的库文件。它不依赖于库提供的CMake配置文件,而是直接查找库文件。使用find_library时,需要手动指定库文件路径、头文件路径等。find_library更适合于较小或没有CMake配置文件的库,如Crypto++。比如实际应用中,我们使用find_library来找到Crypto++库,因为Crypto++库没有提供CMake配置文件。而对于Boost,我们使用find_package,因为Boost库提供了CMake配置文件,使得库的查找和链接更简便。

总之,find_packagefind_library都可以用于在CMake中查找和链接库,但find_package更适用于具有CMake配置文件的库,而find_library则适用于没有CMake配置文件的库

标签:CMake,配置文件,package,library,Boost,find
From: https://www.cnblogs.com/lidabo/p/18175409

相关文章

  • 【cmake】find_package设置查找路径
     1.find_package的作用与实例用来查找第三方依赖包的.cmake文件,并根据.cmake文件生成依赖包的头文件目录和库文件路径等;CMakeLists.txt实例find_package(ProtobufREQUIRED)include_directories(${PROTOBUF_INCLUDE_DIR})add_executable(mainsrc/main.cpp)target......
  • Only a type can be imported. XXX resolves to a package
    在编写jsp页面是,导入需要的包,运行时报错main.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@pageimport="java.util.List"%><%@pageimport="com.beans.E......
  • jmap使用报错Doesn't appear to be a HotSpot VM (could not find symbol "gHotSpotVM
    报错场景问题原因服务器上装了jdk,按理来说jmap是自带了的,可以直接使用,根据情况来看是装了jmap但是无法正常使用,推测是版本的问题导致解决方式指定jdk自带的jmap工具1.查看当前java的环境变量echo$JAVA_HOME2.配置jdk自带工具的环境变量exportPATH=$JAVA_HOME/bin:$P......
  • DC-1-Drupal-find提权
    靶机下载地址:https://www.vulnhub.com/entry/dc-1%2C292/靶机描述:DC-1是一个专门构建的易受攻击的实验室,旨在获得渗透测试领域的经验。共有五个flag,但最终目标是拿到root目录中的flag。一、信息收集1.探测目标方法一:使用arp-scan工具探测同一区域中存活主机arp-scan-l-l......
  • ORA-04063: Package Body “SYS.DBMS_CUBE_EXP” While Expdp
    1.场景数据库版本:11.2.0.4当执行@?/rdbms/admin/awrextr.sql进行awr性能分析数据导出时,报错:ORA-20115:datapumpexportencounterederror:ORA-39127:unexpectederrorfromcalltoexport_string:=SYS.DBMS_CUBE_EXP.INSTANCE_EXTENDED_INFO_EXP('AW$EXPRESS','SYS',......
  • CMakeLists.txt --- install使用
    例:cmake_minimum_required(VERSION3.9)project(test)set(CMAKE_BUILD_TYPEDebug)add_library(hahatest.cpp)install(TARGEThahaDESTINATION/home/linxisuo/project/test)install(DIRECTORY${CMAKE_SOURCE_DIR}/testDESTINATION/home/linxisuo)说明:1.安装......
  • CMakeListx.txt --- include_directories和target_include_directories命令
    1. include_directories语法include_directories([AFTER|BEFORE][SYSTEM]dir1[dir2...])作用将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径。参数默认情况下,include_directories命令会将目录添加到列表最后,可以通过命令设置......
  • 路径规划:层次化路径规划系统——hierarchical pathfinding system —— Hierarchical
    项目地址:https://www.gdcvault.com/play/1025151/Hierarchical-Dynamic-Pathfinding-for-LargePPT地址:https://ubm-twvideo01.s3.amazonaws.com/o1/vault/gdc2018/presentations/Alain_Benoit_HierarchicalDynamicPathfinding.pdf视频地址:https://www.youtube.com/watch?......
  • CMakeLists.txt --- 导入接口库(预编译库)
    以接口库的方式导入预编译库cmake_minimum_required(VERSION3.9)project(test)set(CMAKE_BUILD_TYPEDebug)set(CMAKE_C_FLAGS"$ENV{CFLAGS}-O2-Wall-pthread")set(CMAKE_CXX_FLAGS"$ENV{CFLAGS}-O2-Wall-pthread-std=c++11-std=gnu++11")#设置mo......
  • A* 算法、PathFinding问题中的 allow diagonal 和 don't cross corners,以及 .map文件
    地址:https://webdocs.cs.ualberta.ca/~nathanst/papers/benchmarks.pdf关于地图文件:.map文件的格式参考:https://movingai.com/benchmarks/formats.html......