![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
makefile和cmake
文章平均质量分 83
makefile从入门到精通
cmake从入门到精通
YZF_Kevin
若有恒,何必三更眠五更起;最无益,莫过一日曝十日寒
展开
-
cmake简洁教程 - 第五篇
option (MYDEBUG "debug mode" OFF) 的意思是设置编译变量,第一个参数表变量名为 MYDEBUG,第二个参数表注释,第三个参数表变量的值,如果没有第三个参数,该值默认为OFF。举例如下:新建两个main文件,分别是main1.cpp,main2.cpp,在指定情况下编译main1.cpp 和main2.cpp,其他情况下只编译main1.cpp。文件架构如下图(main1.cpp,main2.cpp都在src目录下,另外有两个CMakeLists.txt文件)原创 2022-09-04 21:37:22 · 775 阅读 · 0 评论 -
cmake简洁教程 - 第四篇
第9,10行:新命令,设置目标文件的属性,这里我们是设置了属性 OUTPUT_NAME 也就是最终的文件名字为func1,所以最终生成的动态库文件名为 libfunc1.so , 最终生成的静态库文件名为 libfunc1.a。第4行:简单的set命令。第12行:仍然是普通的set命令,但使用了新的cmake全局变量,LIBRARY_OUTPUT_PATH 表库文件的输出路径,这里我们设置为工程根目录下的lib文件夹下。由于cmake内容较多,篇幅较长,为了不让人疲倦,分成了多篇博客,全部博客链接如下。..原创 2022-08-29 23:05:15 · 1221 阅读 · 0 评论 -
cmake简洁教程 - 第三篇
从前面几篇博客中可以看到,如果不这样做,cmake运行时会生成附带文件(例如CMakeFiles,cmake_install.cmake Makefile等文件)就会跟工程的代码文件混在一起,会对程序的目录结构造成污染。而在build目录下运行cmake .. 则生成的附带文件就只会待在build目录下,如果我们不想要这些文件了就可以直接删除build目录,很简洁。第3行:新命令,意思是添加了一个cmake的子目录,且该目录下有CMakeLists.txt文件,请构建之。..................原创 2022-08-28 22:06:42 · 1294 阅读 · 0 评论 -
cmake简洁教程 - 第二篇
意思是给把3个源文件(main.c testFunc1.c testFunc.c)赋给变量 SRC_FILES,接下来正常使用变量 SRC_FILES 即可,还是上面的例子,改造如下。命令中添加所有的源文件,而且一旦我们新加了代码文件,就要修改CMakeLists.txt文件并重新生成makefile,这个做法太low了,有没有比较优雅的方法呢?类似上篇博客,这次我们又添加了fun1.c, fun1.h, fun2.c, fun2.h 四个文件,现在目录如下图。....................原创 2022-08-25 00:01:23 · 994 阅读 · 0 评论 -
cmake简洁教程 - 第一篇
linux环境下c/c++的编译都要用到makefile,但是makefile较为复杂,不易入门,而且跨平台性也不好,所以cmake诞生了,它是跨平台,跨编译器的,其配置文件cmakelists.txt可以直接拿到其它平台上使用,不用修改,即可生成对应平台的编译文件。好了,我们在CMakeLists.txt文件的目录下执行如下命令(意思是把本目录下的CMakeLists.txt文件生成make文件)第三行的意思是要编译的ELF文件,也就是二进制文件名为main,使用的源文件名为main.c。........原创 2022-08-21 22:32:57 · 6783 阅读 · 0 评论 -
Ubuntu升级cmake的正确方式
可以看到/usr/bin目录下的cmake成为了一个软链接,指向了/etc/alternatives/cmake,而后者由指向了/usr/local/bin/cmake,也就是我们安装的版本。某些软件包编译时需要高版本的Cmake,因此需要升级Cmake。不能使用sudoapt-getremovecmake卸载低版本cmake后再重装高版本,这样做会导致之前编译和安装的很多库一起被卸载!最后使用新安装的cmake替换旧版本,其中/usr/local/bin/cmake为新安装的cmake目录。...转载 2022-07-30 11:20:19 · 5386 阅读 · 1 评论 -
centos升级gcc
今天写了一些c++测试代码,用到了CAS操作,发现旧版本的gcc居然不支持,笔者原来是gcc4.8.5没办法,只好升级gcc了,这里把升级步骤记录下来步骤1:wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-9.1.0/gcc-9.1.0.tar.gz笔者下载的是gcc9.1.0版本,如果你想下载其他版本,请参考笔者的这篇博客,找到对应的版本名字,把上面的wget命令填对就行步骤2:下载完安装包后,解压,即命令.原创 2021-08-16 17:43:27 · 545 阅读 · 0 评论 -
万能makefile深入浅出 - 第四篇
1. 本示例演示的是编译多个可执行程序,库文件,需链接动态库静态库,且需先编译库,并且库与库之间,可执行程序之间皆存在依赖关系的makefile的编写方式(自己写的简单动态库编译和使用,自己写的简单静态库的编译和使用)2. 目的是帮助那些新接触makefile的新手如何快速写出可用的makefile,下载本例后完全可以稍作修改就可以满足自己的需要3.本篇博客逐条语句分析了万能makefi...原创 2019-03-01 16:23:32 · 470 阅读 · 0 评论 -
万能makefile深入浅出 - 第二篇
1. 本示例演示的是需链接动态库静态库,但不需编译库的makefile的编写方式(动态库是jsoncpp的使用,静态库是tinyxml的使用)2. 目的是帮助那些新接触makefile的新手如何快速写出可用的makefile,下载本例后完全可以稍作修改就可以满足自己的需要3.本篇博客逐条语句分析了万能makefile的实现,尽可能多的添加了注释,也在一些地方进行了修改,以用于不同情况下m...原创 2017-01-24 17:27:07 · 358 阅读 · 0 评论 -
万能makefile深入浅出- 第一篇
1. 本示例演示的是最简单的,即只需编译源文件,不需链接库的makefile的编写方式2. 目的是帮助那些新接触makefile的新手如何快速写出可用的makefile,下载本例后完全可以稍作修改就可以满足自己的需要3.本篇博客逐条语句分析了万能makefile的实现,尽可能多的添加了注释,也在一些地方进行了修改,以用于不同情况下makefile的编写4. 所有示例都在centos上...原创 2017-01-24 22:44:14 · 603 阅读 · 0 评论 -
万能makefile深入浅出 - 第三篇
1. 本示例演示的是需链接动态库静态库,且需先编译库的makefile的编写方式(自己写的简单动态库编译和使用,自己写的简单静态库的编译和使用)2. 目的是帮助那些新接触makefile的新手如何快速写出可用的makefile,下载本例后完全可以稍作修改就可以满足自己的需要3.本篇博客逐条语句分析了万能makefile的实现,尽可能多的添加了注释,也在一些地方进行了修改,以用于不同情况下...原创 2017-04-05 23:28:34 · 1208 阅读 · 0 评论