首页
学习
活动
专区
圈层
工具
发布

cmake:使用find_package查找libjpeg的静态库

https://blog.csdn.net/10km/article/details/82931978 我们知道简单的使用命令find_package可以查找指定的package....对于经常会用到的 jpeg库turbojpeg,可以用find_package(JPEG REQUIRED)来查找。...默认查找到的是动态库,所以如果想查找libjpeg的静态库,这样是不行的。...其实FindJPEG.cmake脚本在设计时已经考虑到了这个问题,如下是FindJPEG.cmake脚本的代码片段,可以看到调用者可以通过JPEG_NAMES这个变量指定优先查找到的库名字。...所以如果想要指定优先使用静态库,前面的cmake脚本可以稍改一下,如下,就是在调用find_package之前设置JPEG_NAMES为想要的静态库名: # 查找libjpeg库,优先使用静态库 if(

2.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CC++生态工具链——单元测试工具Catch2简介

    由于BDD使用非常简单的语言来描述测试过程,更方便沟通和迭代,使产品经理、开发者和测试者都可以深入了解项目的进展,使开发出来的产品可以快速响应用户的反馈和需求。...这个”拿捏“的手势就是Catch2的官方logo Catch2的特性 仅使用头文件就可以完成测试样例构建,无其他依赖库。 支持自注册函数。...Catch2的安装和CMake集成 1.安装Catch2的方式 (1).直接下载头文件,然后直接在项目中使用头文件。...将Catch2完整项目代码导出成依赖库(Catch2::Catch2和Catch2::Catch2WithMain两个依赖库),然后用target_link_libraries函数链接这两个依赖库。...依赖库放在子目录下(比如lib文件夹)时,使用add_subdirectory(lib/Catch2)。

    2.7K20

    C++单元测试框架选型与实战速查手册

    一、框架核心价值定位1.1三大框架战略定位分析维度GoogleTest(v1.14+)Catch2(v3.5+)doctest(v2.4+)决策影响哲学定位企业级、全覆盖现代化、开发者友好极简主义、零负担决定团队协作模式核心优势工业级生态系统优雅的测试表达编译速度优势影响开发流程效率适用场景大型商业项目开源库...4.内存池分配器替代动态内存优化手段:-编译时过滤不需要的测试用例-静态分配测试结果缓冲区-禁用异常处理(RTTI)场景4:科研计算库(快速迭代、学术用途)展开代码语言:TXTAI代码解释混合策略:doctest...用于发布前的全面验证工具链:-使用Python脚本转换测试用例-配置不同的CMake构建目标5.3迁移策略与兼容层从GoogleTest迁移到Catch2展开代码语言:C++AI代码解释//兼容层头文件...支持提升可读性单头文件部署简化依赖管理注重开发者体验与错误信息质量项目使用现代C++(14/17/20)特性✅选择doctest当:编译时间是最重要的考量因素目标环境资源严重受限(嵌入式)测试需要极低的内存与二进制开销希望测试代码对生产代码零侵入项目需要极简的集成与配置...,使用每个框架为项目的一个代表性模块编写测试。

    36000

    面向 C++ 的现代 CMake 教程(三)

    我们将讨论对象文件的内部结构,如何进行重定位和引用解析,以及它们的用途。我们将讨论最终可执行文件与其组件的区别以及系统如何构建进程映像。 然后,我们将向您介绍各种库——静态库、共享库和共享模块。...让我们来看看每种库类型,了解它们是如何工作的。 静态库 要构建一个静态库,我们可以简单地使用我们在前面章节中已经看到的命令: add_library( [...])...如果我们想无论如何都构建一个静态库,我们可以提供一个显式的关键字: add_library( STATIC [...]) 静态库是什么?...现在我们已经知道了如何链接,我们可以检索外部库并将其用于我们的 CMake 项目中。在下一章中,我们将学习如何在 CMake 中管理依赖关系。...我选择它们的原因如下: Catch2 是一个相对容易学习、得到良好支持和文档的项目。它提供了简单的测试用例,但同时也提供了用于行为驱动开发(BDD)的优雅宏。

    1.9K00

    CMake 秘籍(三)

    在本章中,我们将演示如何将测试集成到 CMake 构建结构中,使用流行的测试库和框架,并牢记以下目标: 让用户、开发者和持续集成服务轻松运行测试套件。...一个现代且流行的测试库是 Catch2(github.com/catchorg/Catch2)。这个测试框架的一个很好的特点是它可以作为单个头文件库包含在你的项目中,这使得编译和更新框架特别容易。...如何做 为了使用 Catch2 库,我们将修改前一个配方的CMakeLists.txt,执行以下步骤: 我们可以保持CMakeLists.txt的大部分内容不变: # set minimum cmake...我们从第一章,从简单可执行文件到库中的第三部分,构建和链接静态和共享库的讨论中回忆起,IMPORTED库是 CMake 提供的伪目标,用于表示预先存在的依赖关系及其使用要求。...准备就绪 我们将展示如何提取包含 Eigen 库的存档,并使用提取的源文件来编译我们的项目。

    1.7K20

    C++开发者终极武器库:2024年主流工具链超详解(编译器、IDE、构建、调试、测试全覆盖)

    如果现代开发者仍然只满足于使用“刀耕火种”式的原始工具,那么他不仅会精疲力尽,更将在这场效率与创新的竞赛中远远落后。 正如牛顿所言:“如果我看得更远,那是因为我站在巨人的肩膀上。”...中小型项目、追求简洁和快速上手选 Catch2。...特点: 与CMake集成极佳:提供CMake工具链文件,使用 find_package 即可轻松集成库。...编译模式灵活:支持静态库、动态库的安装,支持自定义 triplet 进行交叉编译。...静态检查:配置 Clang-Tidy,在编码和CI阶段实时检查代码。 依赖管理:使用 vcpkg 或 Conan 来管理第三方库。

    1.1K20

    【可测试性实践】C++ 单元测试&代码覆盖率统计

    引言 最近在调研C++工程怎么做单元测试和代码覆盖率统计,由于我们工程有使用Boost库,尝试使用Boost.Test来实现单元测试并通过Gcov和Lcov来生成代码覆盖率报告。...缺点: Mock功能需要额外的库(如Google Mock)。 Catch2: 优点: 代码简洁,测试代码可读性强,单头文件,集成方便。 缺点: Mock功能需要额外的库。...Boost.Test: 优点: 功能强大,丰富的断言和测试功能,兼容Boost库。 缺点: 学习曲线较陡,文档虽然丰富但略显复杂。 CppUnit: 优点: 基础功能稳定,适合老项目。...使用Boost.Test框架实现单元测试 假设你工程使用是Boost库,可以通过Boost.Test来实现单元测试。...BOOST_AUTO_TEST_CASE(test_add) 定义一个测试用例。 使用gcov + lcov统计代码覆盖率 准备工作 确保已经安装以下工具: CMake:用于构建项目。

    1.1K20

    图森未来-算法后端平台二面(pass)

    哈喽~,大家好,我是千羽。 下面分享我认识的一位大佬华中科技大学985硕,图森未来-算法后端平台二面实习。 1、动态链接与静态链接之间的区别?...内存使用:静态链接的程序体积会相对大一些,如果静态库有更新的话,所有可执行文件都得重新链接才能用上新的静态库。而动态链接则允许多个程序共享同一段代码,而不需要在磁盘上存储多个拷贝。...使用CMake或Make管理项目的优点包括: 自动化构建:CMake和Make都能自动化处理构建过程,减少了手动编写构建脚本的需求,使得项目构建更加便捷和高效。...社区支持:CMake得到了广泛的社区支持,很多开源项目都使用了CMake作为构建工具,因此可以方便地找到相关的文档、教程和第三方库。而Make虽然也有一定的社区支持,但相比CMake略显不足。...集成测试工具:CMake可以方便地集成测试工具,例如Google Test、Catch2等,使得测试更加便捷和自动化。而Make则需要手动编写测试脚本。

    59210

    别再用Google Test了,试试CTest

    可以通过公众号获取我的微信,拉你进技术交流群 可惜的是,Gtest我只是了解过一点点,但是由于其需要依赖对应的库,对于项目来讲有些重,所以最终选择了CTest——CMake提供的测试工具。 1....CTest是什么 CTest是CMake自带的测试工具,专门用于自动化测试。如果你的项目使用CMake构建,CTest几乎是零成本集成的最佳选择。。...虽然市面上有许多优秀的测试框架,如Google Test、Catch2、Boost Test,但如果你的项目已使用CMake,CTest更为便捷。 2....CTest怎么用 CTest的使用有两个前提,已经安装CMake且项目使用CMake构建。...对于追求简洁、轻量、与CMake深度结合的项目,推荐优先使用CTest。

    96200

    C++那些事之项目篇Catch2

    C++那些事之项目篇Catch2 今天推荐一个值得学习的开源项目"Catch2" ,之前写过如何使用google的googletest编写单元测试,你会发现需要编译生成lib库,比较麻烦,而Catch2...是一个Header only库,能够快速使用,只需要引入header file,便可以直接使用,本节的练习代码将会在星球提供,已在星球的阅读下载即可,不在的可以扫末尾二维码加入哦。...本节对应的视频教程: 任何一个大型项目都需要单元测试,那么本节就来引入项目篇之快速单元测试系列之一Catch2。 Catch2是一个功能丰富的C++测试框架,用于编写单元测试、集成测试和功能测试。...它是一个开源项目,旨在提供简洁、直观和强大的测试编写和执行体验。 使用Catch2可以轻松编写和组织测试用例,并提供丰富的断言和测试宏来验证代码的行为和预期输出。...最后,值得一提的是Catch2 v3版本出来了,最大的变化是Catch2不再是一个单头库,因此如果想只用一个header file,就下载v2版本吧。本节完!

    77140

    Go:如何使用标准库testing的基准测试功能

    基准测试是一种检测程序性能的有效方法,特别是在Go语言中,它提供了一个强大的标准库来帮助开发者执行这些测试。本文将详细介绍如何使用Go的标准库来编写和运行基准测试,以及如何解读结果以优化代码。 1....b.N是由测试框架提供的,表示测试应该运行的次数。 2. 运行基准测试 要运行基准测试,可以使用go test命令并加上-bench标志。...以下是如何执行基准测试的命令: bash go.exe test -benchmem -run=^$ -bench ^BenchmarkSum$ ....解读基准测试结果 执行基准测试后,我们会得到类似以下的输出: 这里: BenchmarkSum-22 表示测试的函数名,-22表示使用了22个CPU核心。...通过Go语言的标准库,开发者可以方便地编写和执行这些测试,进而根据测试结果调整和优化代码。理解和使用好这一工具,将有助于提高软件的性能和质量。

    56910

    面向 C++ 的现代 CMake 教程(五)

    第四章,使用目标工作: 在这里,我们强调了现代 CMake 项目如何广泛使用目标。我们的项目也将如此,以下原因是: 定义几个库和可执行文件(用于测试和生产)将使项目保持组织性并保持干燥....但由于该项目还提供了一个库,我们将明确参考一些以下构建说明: 用于测试和开发的静态库 用于发布的共享库 本章概述了如何为测试分离main(),我们也将这样做。...此外,在本章中,我们讨论了两个测试框架:Catch2 和 GTest 带 gMock;对于这个项目,我们将使用后者。为了获得清晰的覆盖信息,我们将使用 LCOV 生成 HTML 报告。...共享库与静态库 我们在第六章中简要介绍了这两种库,使用 CMake 链接。我们提到,总体内存使用对于使用相同共享库的多个程序可能更有利,并且用户可能已经拥有最流行的库,或者知道如何快速安装它们。...作为库作者,我们可以决定是否提供库的静态或共享版本,或者我们可以简单地提供这两个版本,并将此决定留给使用我们库的程序员。我们在这里选择后一种方法(只是为了看看它是如何完成的)。

    97700

    项目篇之手把手100行写一个简易版Mutex

    基于 POSIX 标准的信号量库实现,包含 Catch2 单元测试,附带了基于 Catch2 框架的单元测试,用于验证互斥锁的正确性和稳定性,使用bazel编译,google编码规范。...其中涉及C++知识(RAII、信号量、lock_guard、线程安全编程),还能学习以下内容: 1.Bazel构建系统:了解如何使用Bazel来管理和构建C++项目。...Bazel是一种高效、可扩展的构建工具,可用于管理复杂的项目结构、依赖关系和构建流程。 2.Catch2测试框架:掌握如何使用Catch2来编写单元测试。...Catch2是一个功能强大且易于使用的C++测试框架,可以帮助你编写清晰、可读性高的测试用例,提高代码质量和可靠性。 3.原子操作:了解原子操作的概念和使用方法。...轻量级且易于使用:该互斥锁实现简单且易于集成到现有项目中,无需依赖复杂的第三方库或框架。 编译方式: 提供g++ 与bazel两种方式编译运行,方便快速学习。

    36730

    C++编程进阶:从熟练使用者到架构思维者的蜕变

    C++11引入的线程库提供了跨平台支持,但真正的挑战在于:无锁编程:了解原子操作的内存顺序(memory_order)及其对性能的影响线程安全设计模式:如线程局部存储、生产者-消费者模式协程(C++20...大型项目架构能力进阶C++程序员需要具备系统设计能力:模块化设计:合理划分命名空间和头文件,降低编译依赖二进制兼容性:使用PImpl惯用法保持ABI稳定构建系统精通:掌握CMake高级特性,管理复杂项目结构跨平台开发...:处理平台特定代码,确保可移植性测试与调试高级技巧单元测试:使用Google Test或Catch2编写可维护的测试模糊测试:发现边界条件错误调试技巧:核心转储分析、条件断点、数据断点静态分析:使用Clang-Tidy...等工具提前发现问题持续学习路径C++生态不断演进,保持学习是关键:关注C++标准委员会动态和提案阅读开源项目源码(如Boost、Chromium、LLVM)参与C++社区讨论(Reddit的r/cpp、...CppCon视频)掌握相关工具链(编译器、调试器、分析器)结语C++进阶之路是从语言使用者到系统设计者的转变。

    20910

    《C++跨平台开发:突破界限,释放无限可能》

    而 C++作为一种强大的编程语言,也具备实现跨平台开发的能力。本文将深入探讨如何在 C++中实现跨平台开发,为开发者们提供实用的指南和建议。...库的兼容性 在跨平台开发中,需要使用一些跨平台的库来实现特定的功能。然而,不同的库可能在不同平台上有不同的兼容性问题,这需要开发者进行仔细的选择和测试。 三、C++跨平台开发的解决方案 2. ...以 CMake 为例,它是一个跨平台的构建工具,可以生成各种不同平台的构建脚本,如 Makefile、Visual Studio 项目文件等。...CMake 提供了丰富的功能和指令,可以方便地管理项目的构建过程。开发者只需要编写一个 CMakeLists.txt 文件,就可以在不同的平台上进行构建。 四、C++跨平台开发的最佳实践 4. ...测试和调试 跨平台开发需要进行充分的测试和调试,以确保代码在不同的平台上都能够正确运行。开发者可以使用一些跨平台的测试框架,如 Google Test、Catch2 等,来进行单元测试和集成测试。

    85410

    【C++ 语言】Visual Studio 配置 POSIX 线程 ( Windows 不支持 POSIX | 配置文件下载 | 库文件说明 | 配置过程 )

    文件 , 在 Android , Linux 上的动态库是 .so 文件 ; ② lib 静态库文件说明 : 在 Windows 上静态库有两种 , 一种只是单纯的起到引导作用 , 引导如何去链接 dll...CMake 配置 静态库 : 用于引导如何链接动态库和静态库 , 这里配置自动根据当前是 32 位还是 64 位程序 , 确定静态库的配置目录 ; #配置自动根据当前是 32 位还是 64 位程序 ,...确定静态库的配置目录 if(CMAKE_CL_64) set(platform x64) else() set(platform x86) endif() #配置静态库 , 用于引导如何链接动态库和静态库...\Windows\SysWOW64 目录下 ; 配置代码测试 ---- 线程使用代码 : // 005_Thread.cpp: 定义应用程序的入口点。...CMake 项目,在此处包括源代码并定义 # 项目特定的逻辑。

    1.8K10
    领券