Cmake Practice学习遇到问题

Cmake Practice 0、前言 因为在使用OpenCV以及caffe的过程中都接触到了许多关于CMake的使用,于是就想了解一下CMake究竟是怎样一个东西,有什么作用。顺便做一个学习笔记。  本文参考《CMake Practice》这篇文章完成,旨在指导用户快速使用CMake,如果需要更详细的内容,请通读《CMake Practice》这篇文章。下载路径:http://sewm.pku.edu.cn/src/ 阅读详情

在学习网上流行的Cmake实践即Cmake Practice文档时,自己按照文档都验证了其中的例子和程序,但在最后一章遇到问题并更正记录如下:

九,复杂的例子:模块的使用和自定义模块

二,编写属于自己的 FindHello 模块。

1,定义 cmake/FindHELLO.cmake 模块
FIND_PATH(HELLO_INCLUDE_DIR hello.h /usr/include/hello /usr/local/include/hello)
FIND_LIBRARY(HELLO_LIBRARY NAMES hello PATH /usr/lib /usr/local/lib)
IF (HELLO_INCLUDE_DIR AND HELLO_LIBRARY)
     SET(HELLO_FOUND TRUE)
ENDIF (HELLO_INCLUDE_DIR AND HELLO_LIBRARY)
IF (HELLO_FOUND)
     IF (NOT HELLO_FIND_QUIETLY)
          MESSAGE(STATUS "Found Hello: ${HELLO_LIBRARY}")
     ENDIF (NOT HELLO_FIND_QUIETLY)
ELSE (HELLO_FOUND)
     IF (HELLO_FIND_REQUIRED)
           MESSAGE(FATAL_ERROR "Could not find hello library")
     ENDIF (HELLO_FIND_REQUIRED)
ENDIF (HELLO_FOUND)

自己在验证该自定义cmake模块时,通过message函数打印,发现找不到HELLO_LIBRARY变量,一直显示

HELLO_LIBRARY:HELLO_LIBRARY-NOTFOUND

后经查找官网 FIND_LIBRARY函数定义即使用方法,终于解决问题:

官网函数说明如下:

find_library (
          <VAR>
          name | NAMES name1 [name2 ...] [NAMES_PER_DIR]
          [HINTS path1 [path2 ... ENV var]]
          [PATHS path1 [path2 ... ENV var]]
          [PATH_SUFFIXES suffix1 [suffix2 ...]]
          [DOC "cache documentation string"]
          [NO_DEFAULT_PATH]
          [NO_CMAKE_ENVIRONMENT_PATH]
          [NO_CMAKE_PATH]
          [NO_SYSTEM_ENVIRONMENT_PATH]
          [NO_CMAKE_SYSTEM_PATH]
          [CMAKE_FIND_ROOT_PATH_BOTH |
           ONLY_CMAKE_FIND_ROOT_PATH |
           NO_CMAKE_FIND_ROOT_PATH]
         )

将上面自定义模块中的那句

FIND_LIBRARY(HELLO_LIBRARY NAMES hello PATH /usr/lib /usr/local/lib)

改为:

FIND_LIBRARY(HELLO_LIBRARY NAMES hello PATHS usr/lib /usr/local/lib)

即可,顺利找到自定义模块及编译输出,故记录之。

CMake入门学习+实战<一> 文章整合自: CMake Practice http://sewm.pku.edu.cn/src/paradise/reference/CMake%20Practice.pdf CMake 官方文档 https://cmake.org/cmake/help/latest/ 以及其他网络资料 目标: 代码移植 静动态库编译调用 文章为CMake Practice的笔记以及一 阅读详情

相关推荐

cmake学习笔记

参考文档《CMake+Pratice》

u012491028的博客 1097

《CMake Practice》示例程序的错误

最近在学习CMake,用的自然是《CMake Practice》这本书,看得出来作者写这本书的时候有些匆忙,存在一些纰漏。 t1中的错误自然不用说,漏了${}这个错误网上很多博文都提及了,但是接下来的t2中的一个错误网上却找不到相关的资料。 在t2的练习后,作者告诉我们运行的结果应该是这样,但是如果按照作者所给出的代码,执行后的结果中,/usr/bin/中只有runhello.sh一个文件,而没...

doctor_fung的博客 558

CMake Practice

cmake文档描述,介绍cmake的一些使用方法,cmake 是 kitware 公司以及一些开源开发者在开发几个工具套件(VTK)的过程中衍 生品,最终形成体系,成为一个独立的开放源代码项目。项目的诞生时间是 2001 年。

CMake 最佳实践第二版(二)

迄今为止,在本书中,我们已经介绍了如何使用CMake构建和安装我们自己的代码。在本章中,我们将探讨如何使用那些不是 CMake 项目一部分的文件、库和程序。本章的第一部分将讲解如何一般性地查找这些内容,而后半部分将专注于如何管理依赖关系,以便构建你的 CMake 项目。使用 CMake 的一个最大优势是,它内置了依赖管理功能,用于发现许多第三方库。在本章中,我们将探讨如何集成已安装在系统上的库和本地下载的依赖项。此外,你还将学习如何将第三方库作为二进制文件下载并使用,或者如何从源代码直接在 CMake 项目

龙哥盟 693

Arduino——GY39大气压、温湿度、光照模块

前几天买东西的时候买了一个GY39,这个模块集成了温湿度,大气压,海拔,光照一体,使用起来很方面。它有两种工作模式使用串口模式时需要搭配转接板,我选择了IIC模式,看一下通信协议吧,就是关于高八位和低八位的数据。看一下接线。

戚晨夕的博客 2605

NVIDIA DGX Spark实战:如何在桌面上轻松运行200B参数大模型?

本文详细介绍了如何利用NVIDIA DGX Spark在桌面端轻松运行200B参数大模型。通过实战演示,从系统初始化、模型获取部署到内存管理与性能调优,重点解析了其统一内存架构如何解决本地推理的显存瓶颈,并探讨了进行轻量化微调(如LoRA)的可能性,为AI开发者和研究团队提供了高效的本地化大模型操作方案。

weixin_29054195的博客 882

cmake使用教程(实操版)(六)

一、复杂的例子:模块的使用和自定义模块 本节着重介绍系统预定义的Find模块的使用以及自己编写Find模块,系统中提供了其他各种模块,一般情况需要使用INCLUDE指令显示的调用,FIND_PACKAGE指令是一个特例,可以直接调用预定义的模块。 其实使用纯粹依靠cmake本身提供的基本指令来管理工程是一件非常复杂的事件,所以,cmake设计成了可扩展的架构,可以通过编写一些通用的模块来扩展cmake. 在本章,我们准备首先介绍一下cmake提供的FindCURL模块的使用。然后,基于我们的libhello

qq_34796146的博客 946

西门子触摸屏教程wincc flexible2008 sp5 Smart V3 V4中文版软件

西门子触摸屏教程wincc flexible2008 sp5 Smart V3 V4中文版软件

liang007dudu的博客 1万+

cmake 实践中 FindHello模块 FindHELLO.cmake报错解决方法

在主目录t6下面的CMakeLists文件中,不止需要输入cmake practice中需要的SET()指令 必须按顺序输入 先输入 SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) 再输入 ADD_SUBDIRECTORY(src) 才能最终得到对src文件夹下的main.c进行编译。 一定要保持ADD_SUBDIRECT...

hankerbit的博客 647

vmware虚机Debian10磁盘空间无损扩容

该方法不适和LVM的磁盘管理 备份 一定要先做备份,虚机中直接创建一个快照备份 vm上增加空间 初始给的40G空间不够需要扩容,vm那给系统添加到100G 重新分区 查看当前分区情况 sudo fdisk -l

lms99251的博客 7455

突破NER性能瓶颈:BERT与LLM协同的混合架构实践

性能卓越:在多个测试集上,F1分数比单一模型提升5-15%成本可控:相比纯LLM方案,成本降低60%以上易于落地:架构清晰,便于调试和优化这种"专才+通才"的组合思路可以扩展到其他NLP任务中,如关系抽取、事件提取、文本分类等。更精细的流水线优化多模型投票机制在线学习与自适应调整不追求单一模型的万能,而是通过精心设计的组合,让每个组件发挥其独特优势,最终实现系统性能的最优化。欢迎在评论区分享你在NER任务中的实践经验,或者对这个混合架构的改进建议!

Ven%的博客 1022

CMake Practice学习所遇问题及解决

cmake 的 helloworld 本人使用的是Ubuntu18.04,直接在用户下的Desktop中建立了cmake文件夹。 在cmake文件夹中创建了it文件夹,按照CMake Practice教程,在其中建立了main.cpp和CMakeLists.txt文件。 但是在输入相应的内容后,使用cmake . 后会提示错误: CMake Error at CMakeLists.txt:5 (ADD_EXECUTABLE): Cannot find source file: mai

crazy_cz的博客 1013

【WorkBuddy专栏40】从「帮你干活」到「帮你创造」——WorkBuddy设计创意功能深度拆解

【WorkBuddy专栏40】从「帮你干活」到「帮你创造」——WorkBuddy设计创意功能深度拆解

AI人人懂 1296

cmake practice学习总结

目录1 概要2 小试牛刀2.1 内部构建(in-source build)2.1.1 准备工作2.1.2 开始构建2.1.3 内部构建与外部构建2.2 外部构建(out-of-source build)2.2.1 准备工作2.2.2 开始构建3 静态库与动态库构建3.1 建立共享库3.2 编译共享库3.3 添加静态库3.4 动态库版本号3.5 安装共享库和头文件4 使用外部共享库和头文件5 cmake语法5.1 基本语法规则5.2 cmake常用指令 1 概要 2 小试牛刀 这一节中,我们通过一个最简单的例

qq_40378982的博客 1247

Skills入门学习路线

简单来说,Skills就像是给Claude准备的”插件包"或”工具箱”。它是一个集合,里面装了特定的操作指令(Instructions)、可执行脚本(Scripts)和相关素材(Resources)。2025 年 10 月中旬,Anthropic 正式发布 Claude Skills。两个月后,Agent Skills 作为开放标准被进一步发布,意在引导一个新的 AI Agent 开发生态。OpenAI、Github、VS Code、Cursor 均已跟进。为了更好的理解,你可以把。

十二测试录 1098

Python爬虫:实时交通流量数据爬取与路况分析

随着城市化进程的不断推进,交通流量的管理与预测已成为智能交通系统的重要研究方向。交通流量数据不仅为城市交通管理提供了科学依据,还为驾驶员提供了实时路况信息,帮助其做出更加合理的出行决策。通过爬虫技术,我们可以实时获取城市的交通流量数据,从而分析路况,优化交通管理。在这篇博客中,我们将介绍如何使用Python编写一个爬虫来爬取实时交通流量数据,分析道路的交通状况。我们将使用最新的技术工具来构建爬虫,包括。

2201_76125261的博客 1267

cmake practice cmake实践

之前那本书讲得比较难,而且没有具体的示例,需要有对编程有点深入分析才能弄懂,那本书是培养cmake专家的。 所以现在换本简单易行的教材,先理解CMakeLists.txt,然后才可以做深入分析。 学习cmake完全是因为cocos2d-x都是用cmake构建的。 在家目录下创建一个目录cmake 进入cd cmake mkdir t1 cd t1 还是和之前一样编写Hello Wor

wangrl的博客 2304

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

cmake practice学习记录

1. 初识cmake cmake特点:开源,跨平台,管理大型项目,简化编译构建过程,可扩展。 cmake缺点:并不那么简单;cmake编写过程实际上是编程过程,每个目录都需要有CMakeLists.txt;和已有体系配合并不理想。 建议:只有有需求,实践才能学好,读过几天后就忘记了;工程只有几个文件,建议直接编写MakeFile;如果使用的语言不是C/C++/Java,不要使用cmake。 2. 安装cmake 3. 初试cmake(hello world) Cmake自动生成MakeFile。 #

w_suixin的博客 830

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Cmake Practice学习笔记

Cmake Practice学习笔记 PROJECT指令: PROJEXT(projectname [CXX] [C] [Java] ) 例如:PROJECT (HELLO) 功能:用来定义工程名称,并可指定工程支持的语言,支持列表可以忽略,默认支持所有语言。 该指令使用后隐式的定义了两个变量: <projectname>_BINARY_DIR,表示编译路径,等价于HELLO_BINARY_DIR <projectname>_SOURCE_DIR,表示**工程路径,**等价于HEL

mapleleaf98的博客 397

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

CMake Practice 学习笔记五--cmake常用变量

这三个变量指代的内容是一样的,如果是 in source 编译,指的就是工程顶层目录,如果是out-ofosource编译,指的就是工程编译发生的目录。如果是in-source边柜,它和CMAKE_CURRENT_DIR一样,如果是out-of-source编译,他指的是target编译目录。指的是当前处理CMakeLists.txt所在的路径,比如上面我们提到的src子目录。这三个变量指代的内容是一样的。这个变量用来定义自己的cmake模块所在的路径,如下。,后面带**表示常用,了解下,不用全部记住。

weixin_45824067的博客 1830

Cmake Practice(一)

转载自https://blog.youkuaiyun.com/xuewend/article/details/78226576 感谢作者:fishmov 最近在编译安装OpenCV和OpenGL的时候,发现构建系统都换成了cmake自动生成Makefile,确实方便了不少,因此打算学习下cmake的语法规则. 参考书籍<< Cmake Practice>>这个学习笔记也是参考...

qq_15365147的博客 261

CMake_Practice(带书签版本).pdf 简介

CMake_Practice(带书签版本).pdf 简介 去发现同类优质开源项目:https://gitcode.com/ 文件信息 标题: CMake_Practice(带书签版本).pdf 描述: 本资源文件是根据CMake_Practice原文进行整理,并添加了书签,同时针对原文中的一些错字进行了修改,使得阅读更加方便。这是一份在Linux环境下进行C++开发时的必备参考资料。 内容特色...

gitblog_06771的博客 451

CMake Practice学习笔记(一):使用cmake编译一个简单的程序

完成一个简单程序的构建 创建一个新的文件夹,包含以下两个文件 main.c #include <stdio.h> int main() { printf("Welcome to my Blog!\n"); return 0; } CMakeLists.txt PROJECT(HELLO) SET(SRC_LIST main.c) MESSAGE(STATUS "T...

LukeyAlvin的博客 2533

cmake实践操作记录(cmake practice)

仅供自翻方便,如果是学习,建议参cmake practice原文件 cmake 的 helloworld mkdir cmake cd cmake mkdir t1 cd t1 touch main.c touch CMakeLists.txt main.c #include <stdio.h> int main() { printf("Hello World from t1 Main!\n"); return 0; } CMakeLists.txt PROJECT (HELLO

路边的石头 525

CMake Practice 学习笔记二---子目录、安装

在工程目录t2下的CMakeLists.txt中的一句ADD_SUBDIRECTORY(src bin),就会进入子目录src利用该目录下CMakeLlists.txt进行构建哦。此时-DCMAKE_INSTALL_PREFIX指定的目录就是上面INSTALL指令中的DESTINATION。问:你也许会疑惑,src目录下的CMakeLists.txt好像没有用到过?问:如果没有定义CMAKE_INSTALL_PREFIX会安装到哪里?在t2目录下新建build目录,进入build目录进行外部编译。

weixin_45824067的博客 532
上一篇: 2.Add Two Numbers
下一篇: Lua __index __newindex元表方法学习
highmaple
博客等级 码龄16年 0粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值