![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
CMake 与 qmake
文章平均质量分 67
无
爱钓鱼的歪猴
今天不学习,明天变垃圾
展开
-
Windows+WinGW 使用CMake 构建动态库、静态库及使用动态库
在完成接口开发后,为了给其他开发人员调用,通常需要将这部分代码打包生成动态链接库文件。很好地保证了代码的封装性和独立性,作为接口,它可以很好地独立于主程序,便于更新。调用接口的主程序编译时也会绕过已生成的动态链接库,仅作连接,在运行时使用它,减少了前端人员编译的时间消耗。同时由于动态链接库很难被反编译,只有头文件是可见的,这也同时保证了代码的安全性。在Windows系统上,以.dll为后缀的是动态链接库,以.a结尾的是静态链接库。原创 2023-05-24 00:05:48 · 1563 阅读 · 4 评论 -
CMake 安装与打包
上面的haha包源码的效果在在中控台打印 haha,将其打包为deb包,安装好后,也没有多大用。要想起能有功能,那工作量应该不小。对于笔者而言,将一个项目构建成静态库或动态库,或将可执行文件、库文件、头文件安装到别的地方,或许更有意义。举一个不太恰当的例子:新的电脑不用再安装一些软件,比如我已经将OpenCV的库文件、头文件和可执行文件安装好了。【cmake篇】install 命令_仲夏夜之梦~的博客-CSDN博客。原创 2023-05-22 18:56:29 · 2357 阅读 · 0 评论 -
动态库、静态库的构建与使用
所谓静态、动态是指。回顾一下,将一个程序编译成可执行程序的步骤:: 把外部函数的代码(通常是后缀名为.lib和.a的文件),添加到可执行文件中。这就叫做连接(linking)。这种通过拷贝,将外部函数库添加到可执行文件的方式,叫做静态连接(static linking),还有动态连接(dynamic linking)原创 2023-05-22 16:07:24 · 1706 阅读 · 0 评论 -
CMake学习笔记:搜索第三方库及头文件路径 find_package()命令
在实际开发过程中,经常不可避免的会使用到第三方开源库,这些开源库可能是通过apt-get install 命令自动安装到系统目录,也可能是由我们自己下载库的源码然后通过编译安装到指定目录的。不管哪种方式安装的库文件,如果我们需要在自己的项目中使用这些库,首先面临的第一个问题就是如何找到这些库。也就是说,根据我们的需要找到指定本版的库头文件包含路径、链接库路径等,从而能够满足我们开发项目的编译链接需要。原创 2023-05-22 10:08:21 · 3603 阅读 · 0 评论 -
CMake Practice 学习笔记五--cmake常用变量
这三个变量指代的内容是一样的,如果是 in source 编译,指的就是工程顶层目录,如果是out-ofosource编译,指的就是工程编译发生的目录。如果是in-source边柜,它和CMAKE_CURRENT_DIR一样,如果是out-of-source编译,他指的是target编译目录。指的是当前处理CMakeLists.txt所在的路径,比如上面我们提到的src子目录。这三个变量指代的内容是一样的。这个变量用来定义自己的cmake模块所在的路径,如下。,后面带**表示常用,了解下,不用全部记住。原创 2023-05-22 10:04:38 · 1589 阅读 · 0 评论 -
CMake Practice 学习笔记四---使用动静态库
任务:编写一个程序使用我们上一届构建的共享库。原创 2023-05-22 10:02:33 · 536 阅读 · 0 评论 -
CMake Practice 学习笔记三---建立动静态库
将头文件和共享库安装到系统目录/usr/lib和/usr/include/hello中了,不信你查一下(doge)。在lib目录下建立两个源文件 hello.c 、hello.h。采用外编译,即新建一个build目录,在build目录中。在/backup/cmake目录建立t3目录。原创 2023-05-22 10:01:27 · 56 阅读 · 0 评论 -
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目录进行外部编译。原创 2023-05-22 10:01:56 · 376 阅读 · 0 评论 -
CMake Practice 学习笔记一 一个简单的例子
这里通过一个简单的例子来演练一下cmake的完整构建过程。在/backup目录建立一个cmake目录,用来放置学习过程中的所有练习建立第一个练习目录在t1目录建立main.c 和 CMakeLists.txtmain.c文件内容CMakeLists.txt文件内容。原创 2023-05-22 10:01:20 · 86 阅读 · 0 评论 -
CMakeLists.txt基本通用模板
其实整个CMakeLists.txt最基本的就是描述这样一个事件,诶,我要编译一份源代码,生成可执行文件。所以需要了解编译,才能看懂CMakeLists.txt。比如为什么设置链接库的路径?为什么要生成动静态库,我直接生成可执行文件不行吗?原创 2023-05-21 23:26:57 · 329 阅读 · 0 评论 -
CMakeLists.txt的基本指令
库文件是一个压缩包,里面有编译好的二进制函数,仅有 .a或 .so库文件,别人并不知道里面函数是什么样的,或如何调用;(2)在当前路径下执行cmake . 命令,可以发现生成了CMakeFiles文件夹和CMakeCache.txt, cmake_install.cmake, Makefile文件。静态库以 .a为后缀名,共享库以 .so 为后缀名,所有库都是一些函数打包的集合,静态库每次被调用都会生成一个副本,而共享库则只有一个副本,更省空间。(1)明确指定(用空格或分号隔开)--这里我也不是很理解。转载 2023-05-21 23:15:11 · 168 阅读 · 0 评论 -
gcc/g++ 、Make/Makefile、CMake/CMakeLists.txt、qmake关系简述
源码(Source Code)>> 预处理器(Preprocessor)>> 编译器(Compiler) >> 汇编程序(Assembler)>> 目标代码(Target Code) >> 链接器(Linker)>> 可执行程序(Executables)GCC,全称GNU Compiler Collection,是GNU编译器套装,最开始编译C语言,后来可以处理C++以及Fortran、Java、Go等其他语言。编译阶段,G++会调用GCC,对于C++代码,两者等价;qmake是为Qt量身打造的编译工具,原创 2023-05-21 23:10:31 · 701 阅读 · 0 评论 -
编译及交叉编译
编译是指一个源代码文件(这里指的是编译型程序源文件,与之对应的是解释型程序),如C/C++文件要经过预处理(preprocessing)、编译(compliation)、汇编(assembly)和链接(linking)等4步才能变成可执行文件,在日常交流中通常使用“编译”统称这四个步骤。下面详细介绍这四个步骤。也就是说,源代码文件是人写出来的,而可执行文件是用来给计算机执行的,将源代码向可执行文件的转换过程就是编译喽。转载 2023-05-21 22:56:49 · 361 阅读 · 0 评论