跟我一起学CMake】的更多相关文章

如今CMake使用的人数越来越多,包括我项目组里,很多大牛们在写Qt程序的时候都不用自带的qmake,貌似会出现很多问题,他们往往都用自己写的CMake来编译系统,今天我也和大家一起来学学这个高大上的工具--CMake. 首先,一个CMake要想运行,必须在同目录下有CMake脚本,说说是脚本,其实并没什么可怕,说白了就是一串CMake作者自己写的token语法分析文件--CMakeLists.txt. 这个文件比如你的项目有很多文件夹,必须在每个源代码文件夹下都有一个CMakeLists.tx…
刚学cmake,很多东西还不是很懂,不过今天刚刚实现了通过CMake控制debug的开关,兴奋之余记录一下. 背景介绍: 最近参与到了一个大的C++项目,很多代码已经非常成熟,我来添加一些辅助功能,但是源代码中没有预留debug的接口.为了不影响现有代码的结构,我想通过宏定义的方式添加DEBUG控制.原本以为#DEFINE DEBUG只能在.h或.cc文件中定义,后来经人点播才知道#IFDEF DEBUG的精髓是通过cmake来实现. 具体步骤: 首先,我在src代码里编写了若干debug的输出…
最近开始学习CMake,因为项目需求需要用到Qt,自带的qmake会出现许多问题(比如文件修改之后有时候qmake不会侦测到不会重新编译,需要手动去编译等),于是开始尝试使用CMake来编写Qt程序,顺便学习一下怎么用CMake来使用find_package,也算给自己一次学习的机会. 切入正题,CMake对于一些有名的库都有自带文件夹中Modules里.cmake文件查询的支持,比如你需要编写Qt程序,你就可以去cmake_dir/Moudles/查找 FindQt4.cmake这个文件,里面…
https://www.cnblogs.com/cv-pr/p/6206921.html…
公司引擎是用cmake根据目标平台来构建工程的,刚接触的时候深深体会到cmake的方便:如果目标平台是windows,它可以帮你自动构建出vs工程:如果是安卓,自动构建出eclipse工程,如果是IOS,自动构建出xcode工程.想想以前用vs建工程的时候,如果要引入第三方库,必须要手动配置第三方库路径,如果引入的库少,那还没什么,如果多的话就悲剧了,配个环境都要半天.再想想以前在linux平台下手动写Makefile的时候,如果工程比较小,模块少还好办,如果工程大,模块多,各种写依赖关系都要让…
使用cef3替代chromium内核开发产品过程中,第一次接触到系统构建,使用了最常见的CMake.CMake虽然在构建系统中用的比较多,但是使用到的程序员还是很少的.现在在国内能找到的相关资料和博客比较多,本人在学习中也看了很多人的博客,比如 CMake学习(一)  , CMake语法之流程控制 等.再次感谢这些作者的分享.下边提供一些系统学习的资料. CMake的官网地址:http://www.cmake.org/ CMake主要的文档<learning_cmake> <CMake…
这一节我们就一起来看看如何用CMake来链接自己写的lib库,如何进行这些库文件的管理. 一个团队共同开发软件时,一般都是分模块进行作业的,每个人负责整个软件中的一部分,然后再整合成一个完整的软件系统.具体的做法一般是某个人开发的东西是以链接库的形式供团队中的其他人进行调用,或者供本人负责的程序的其他模块进行调用. 比如,A童鞋开发了一种算法,能做数A与数B的加法运算,A童鞋把它编译成lib库的形式给B童鞋调用,提供给B童鞋的就只有该加法运算的头文件(让B童鞋知道这个函数的接口是怎么样的)以及相…
转自:<你所不知的OSG>第一章:CMake初步(1)http://bbs.osgchina.org/forum.php?mod=viewthread&tid=1189&fromuid=3434 本章的主要目的并非介绍OpenSceneGraph的常用类和功能,而是介绍它的一个重要伙伴,抑或说,是一个被愈来愈多的开源软件所青睐的强劲的辅助开发工具——CMake. CMake的定义是:一个跨平台.开源.可扩展的软件编译生成系统,如果您熟悉与之同类的QMake(开源开发库Qt的自动…
cmake 因为“又”要额外学一门语言而被诟病,但这并不妨碍越来越多私人项目用 cmake 来管理:autoconfig 确实是更好的发行工具,但用 cmake 管理项目显然更加的容易.如果要应用这些 cmake 管理的项目到嵌入式环境中,必然涉及交叉编译的问题. 这些项目交叉编译,主要是设置一些环境变量. 这些设定可以写成一个 .cmake 文件,1) 需要交叉编译时 include ,2)或者直接把这些配置写到 CMakeLists.txt 文件的开始位置.两种方法是等效的. 用下面语句应用…
SLAM涉及的知识面很广,我简单总结了 “SLAM知识树” 如下所示: (公众号菜单栏回复 “树” 可获得清晰版) 可以看到涉及的知识面还是比较广的.这里放出一张SLAM圈子里喜闻乐见的表达悲喜交加心情的漫画图,大家可以感受一下: 每个学SLAM的小伙伴可以说都是冒着“头顶凉凉”的巨大风险,勇气可嘉.下面结合SLAM知识树展开具体说说. 编程环境首先先说电脑环境和编程. 1.电脑环境:Linux环境,推荐Ubuntu16.04. 有人问Windows行不行?这么说吧,如果你是一位SLAM领域的大…
CMake简介 原文:http://blog.gclxry.com/use-cmake-on-windows/ 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等.这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别.这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译.而如果使用上面的 Make 工具,就得为每一种标准写一次 Ma…
写在前面的话 运维监控是一个很大的话题,在这一块个人接触的比较突出的服务主要有 Nagio 和 Zabbix 两款.而这几年跳过的公司中,Zabbix 一直都是首选且唯一选择,Nagios 没遇到. 个人算是从 2.2 开始接触的 Zabbix ,但那时我只是 Help desk,主要工作是接受监控告警和将故障通知到指定的人,而不是配置服务.如今已经或多或少用了两三年 Zabbix 了,版本也迭代到了 3.4.10. 最近恰逢换完工作,公司的很多东西需要从零开始搭建,所以准备抽空写一些东西,一是…
一.说明 最近用cmake开发东西,编译vs时候,发现debug和release版本的lib库的依赖项问题,故此小结一下.若有不对之处,还请看官多多指教. 使用的工程有自己编写的工程,也有借用第三方库的工程,还有没有办法找到源码的,只有dll和lib库,没有区分debug和release 版本的. 所以还是分开说,一种自己工程库,一种是第三方库.在写完cmake代码,生成vs后,都可以自动的添加链接库,debug和release版本泾渭分明. 二.自己工程之间的引用 先说,自己编写的工程,工程直…
cmake vs qmake qmake 是为 Qt 量身打造的,使用起来非常方便 cmake 使用上不如qmake简单直接,但复杂换来的是强大的功能 内置的 out-of source 构建.(目前QtCreator为qmake也默认启用了该功能.参考:浅谈 qmake 之 shadow build) 为各种平台和场景提供条件编译 可处理多个可执行文件情况,和很好配合 QtTest 工作 如何选择? Using CMake to Build Qt Projects 一文中说: 对简单的Qt工程…
准备工作 下载代码LoRaMac-node  阅读LoRaMac-node目录下的doc文件夹中的development-environment.md 开工 安装所需环境 CMaka( >= 3.6), ​ sudo apt install CMake 若ubuntu版本为16.04及以下,请参照development-environment.md中提示进行安装高版本的CMake GNU ARM-Toolchain Step1: Inside Ubuntu, open a terminal an…
写在前面 最近在学习Maria DB,为了方便查阅,又为了将所学的知识重新的梳理,特作此随笔一篇,希望过后阅读时能有所感,也希望对大家能够有所帮助. 安装前的准备 大家都知道,在Linux上安装软件一共有三种方式:1.rpm包安装 .2.二进制程序包安装.3.源码编译安装.对于前2种方式安装起来会便捷不少,但是定制化程度低,当我们需要进行软件diy时,那么编译安装就再合适不过了. 对于CentOS 6 来说,使用yum安装,yum源里面默认提供的是低版本MySQL,因此当我们想要安装Maria…
前言 其实我一直弄不明白一点,那就是计算机技术的发展,是让这个世界变得简单了,还是变得更复杂了. 当然这只是一个玩笑,可别把这个问题当真. 然而对于IT从业者来说,这可不是一个玩笑.几乎每一次的技术发展,都让这个生态变得更为复杂."英年早秃"已经成为一种很普遍的现象. Rust是近两年呼声比较高的一种新型开发语言.市场占有量并不大,但增长速度极为迅猛. 有人统计过,在计算机行业,平均每33.5天就有一种所谓的新型开发语言面世,这还不包括很多企业内部.项目内部的内置简易流程工具.然而大浪…
前言 我们常常听到很多人说要学学Linux或者被人告知说应该学学Linux,那么学Linux到底要学什么? 为什么要学Linux 在回答学什么之前,我们先看看为什么要学.首先我们需要认识到的是,很多服务器使用的是Linux系统,而作为服务器应用程序的开发者或者维护者,如果不了解Linux的基本使用,该如何进行开发或者维护呢? 当然,也有可能你听说Linux更高大上,或者是说Linux对开发者更加友好(Windows用户把刀放下),这都是题外话了. 在我看来,学习Linux主要有以下两点原因 使用…
<Linux就该这么学>培训笔记_ch20使用LNMP架构部署动态网站环境 文章最后会post上书本的笔记照片. 文章主要内容: 源码包程序 LNMP动态网站架构 配置Mysql服务 配置Nginx服务 配置php服务 搭建Discuz论坛 选购服务器主机 书本笔记 源码包程序 在RPM和Yum出现之前,只能通过源码包的方式来安装各种服务程序,在安装.升级.卸载程序时还要考虑到与其他程序或函数库的相互依赖关系,十分繁琐. 目前依然有很多软件程序只有源码包的形式,通过源码包的方式安装服务程序具有…
Qt 是 C++ 的库,Qt 在 ansi C++ 的基础上进行了一点扩展. 但国内似乎比较浮躁,学Qt的很多连基本的C++如何编译似乎都不太清楚.本文舍弃IDE或qmake.cmake等工具的束缚,尝试通过几个例子,一步一步从标准 C++ 的编译过渡到 Qt 的编译. 本文涉及的都是最基本的东西,或许可以说,只要你用C++ Qt,不管是通过哪种工具(qmake.cmake.boost.build.qtcreator.vs2008.Eclipse....),本文的内容都是需要理解的(尽管真正写程…
转载地址:https://blog.csdn.net/whahu1989/article/details/82078563 CMake是开源.跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿到其它平台上使用,无需修改,非常方便. 本文主要讲述在Linux下如何使用CMake来编译我们的程序. 一 安装CMake 本文使用ubuntu18.04,安装cmake使用如…
学计算机的,在写代码的时候,IDE安装好,环境按着教程配置好,就直接代码了,编辑器的具体原理只是一知半解,现在来系统学习一下,为了方便以后学习HElib! make和cmake 写程序大体步骤为: 1.用编辑器编写源代码,如.c文件. 2.用编译器编译代码生成目标文件,如.o. 3.用链接器连接目标代码生成可执行文件,如.exe. gcc gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C.C++.Objecti…
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多因素造成了,当然市场需求的重要因素.吴军博士对大数据流行的解释与python流行或许有些默契.数据一直以来都存在,只是在历史条件下,由于计算性能和技术发展的原因,与之匹配的数据处理技术还不是很先进,以至于很多数据被我们舍弃了.同样,python语言简洁流畅等多种优点,也会让第一次接触的编程人员痴迷,…
今天我们来聊聊如何跟Unity学代码优化,准确地说,是通过学习Unity的IL2CPP技术的优化策略,应用到我们的日常逻辑开发中. 做过Unity开发的同学想必对IL2CPP都很清楚,简单地说,IL2CPP就是Unity用来替代mono的一种script backend.至于说Unity为什么用IL2CPP替代mono,就是另外的话题了,本文就不细港了. IL2CPP由两部分组成: 一个AOT(ahead of time)compiler.完全用C#写的. 一个VM runtime librar…
最近因为做了些和hadoop相关的项目(虽然主要是运维),但是这段经历让我对hadoop的实际运用有了更加深入的理解. 相比以前自学hadoop,因为没有实战场景以及良好的大数据学习氛围,现在回顾下的确相当肤浅. 因此我要好好重学下hadoop,短期计划如下: 1.重学HDFS知识 2.重学mapreduce,包括老版的mr以及新的yarn 3.学习hive和pig 4.学习hbase 5.以上学习都是通过理解其架构原理为目的,最后结合大型网站架构里存储的问题,进一步完善关于解决存储瓶颈的知识.…
之前做的一个PPT,分享给博客园的同学. 下载地址: 学技术练英语.pdf 技术是靠自己去学的,学技术不能仅仅是看书看博客,最好是有实践,不管是做实验去验证,还是写各种代码去玩各种特性,还是造轮子都是非常好的学习方法.技术发展很快,学好基础的可以提升自己的内功,以后学其他知识都会很快,把一方面的技术学到够深,才有可能站在更本质的角度去看问题.英语是靠练习的,语言的学习并不需要多少技巧需要花时间,这个PPT里针对的是上班族,给力一些可操作的学习方式的建议供大家参考.…
× 目录 [1]客户机处理 [2]集线器处理 [3]路由器1处理[4]路由器2处理[5]交换机处理[6]服务器处理[7]反向传输 前面的话 上一篇中,介绍了网络基础.本文将详细介绍客户机在浏览网页abc.com时,数据在网络中的传输过程 以图为例,PC1通过HTTP协议访问位于Server上的网页.那么,网页数据在网络中是如何传输的呢?下面是具体的实现步骤 步骤一:客户机处理 HTTP协议的职责是生成针对目标WEB服务器的HTTP请求报文,该报文就是需要传递的数据 下沉到传输层后,由于HTTP协…
× 目录 [1]网络 [2]OSI [3]TCP/IP 前面的话 HTTP协议对于前端工程师是非常重要的.我们在浏览网站时,访问的每一个WEB页面都需要使用HTTP协议实现.如果不了解HTTP协议,就不可能了解网站的本质.在学习HTTP之前,本文先介绍一些网络基础知识 网络 简单地说,网络就是在一定的区域内将两个或两个以上的计算机以一定的方式连接起来,以供用户共享文件.程序.数据等资源.下面就几种常见的网络类型及分类方法做简要介绍 1.按覆盖范围分 局域网(local area network,…
HTTP协议应该是目前使用最多的应用层协议了,用浏览器打开一个网站就是使用HTTP协议进行数据传输. HTTP协议也是基于TCP协议,所以也有服务器和客户端.HTTP客户端一般是浏览器,当然还有可能是其他东西.HTTP服务器,也就是Web服务器,目前已经有很多成熟的产品,例如Apache HTTP Server.Tomcat.Nginx.IIS等. 本文的内容不是讲解如何使用以上的HTTP服务器,而是要分别用MINA.Netty.Twisted实现一个简单的HTTP服务器. 首先,要简单了解一下…
上一篇文章一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库中,我们介绍了Power BI Desktop中连接Oracle和Mysql的方法,其实说到底还是驱动的问题,还有就是坑爹的驱动版本问题.换了新电脑,在导入模型时,居然碰到了Excel导入错误的情况.顺便记下来吧.其实还是驱动的问题. 1.连接Excel文件错误 新电脑连接Excel居然报错... 2.解决方法 详细的解决方法和说明可以参考PBD的中文文档:https://powerbi.microsoft…