makefile和cmakelist(CMake和Make之间的区别)

本文目录
CMake和Make之间的区别
CMake的是构建系统的生成器,CMake代表跨平台Make。它可以产生Makefile文件,它可以产生Ninja构建文件,它可以产生KDevelop或XCode的项目,它能产生Visual Studio解决方案。从同一个CMakeLists.txt文件来产生项目。如果你正在编写需要在很多不同的平台上构建的软件那么CMake的往往是一个不错的选择。
写程序大体步骤为:
1.用器编写源代码,如.c文件。
2.用编译器编译代码生成目标文件,如.o。
3.用链接器连接目标代码生成可执行文件,如.exe。
但如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写一个规则文件,make依据它来批处理编译,这个文件就是makefile,所以编写makefile文件也是一个程序员所必备的技能。
对于一个大工程,编写makefile实在是件复杂的事,于是人们又想,为什么不设计一个工具,读入所有源文件之后,自动生成makefile呢,于是就出现了cmake工具,它能够输出各种各样的makefile或者project文件,从而帮助程序员减轻负担。但是随之而来也就是编写cmakelist文件,它是cmake所依据的规则。所以在编程的世界里没有捷径可走,还是要脚踏实地的。
原文件--camkelist ---cmake ---makefile ---make ---生成可执行文件
Android Studio手动配置Makefile、CMake
在Ubutu上编译出来的.so文件,怎么添加到Android项目中去使用呢?目前:可以通过
Makefile方式和CMake方式引入预编译静动态库(静态库.a 动态库.so)到项目中去使用。就目前而言CMake是Goole推荐使用方式,但是加入接手一个老的NDK项目是MakeFile方式,看不懂就GePi了,所以这里我们还是介绍一下MakeFile方式将静动态库加入到AS中,完成NDK项目的开发。废话不多说,直接撸步骤了:
1、在src/main目录下创建一个ndkBuild文件夹
2、在此文件中创建一个Android.mk文件
3、在此文件中创建一个test.c的源文件
4、将编译好的的.so库复制到src/main目录下
如图所示目录结构:
1、Android.mk文件
2、grade(app)文件
3、test.c文件
4、使用编译好的.so库里面的函数
本结果运行在Android 5.1 系统上
再次运行在Android 8.0系统上
看以清楚知道,其实我们的APK包里面就没有libMainTest.so库,所以APP在8.0上会出现奔溃的现象。so...
1、在src/main目录下创建一个cmake文件夹
include:里面包含需要一些头文件
cmakeTest.c:需要编译的源文件
2、在app目录下创建一个文件:CmakeLists.txt
3、grade(app)
4、cmakeTest.c文件
4、引用编译好的libcmakeTest.so
Android 8.0.0系统:
Android 5.1.1系统:
makefile和Cmakelist.txt的区别
这一章将从软件开发者的角度来描述如何实用CMake。也就是说,如果你的目标是用CMake来管理你的生成过程,请阅读这一章。 CMake的输入 COMMAND(args) 这里的 COMMAND 是命令行的名称,args是用空格分割的参数列表。典型的,对与每一个项目的目录
eclipse自动生成cmakelist
这是一个CMakeLists工程,然后新建一个build文件夹,在build文件夹里面cmake ..这个工程,生成makefile。
在eclipse中新建工程,File-》new-》Makefile Project with Existing Code.然后选择 源码位置,项目名,编译类型等信息
然后就可以看到自己新建的工程目录了。直接编译发现报错***没有规则可以创建目标“all”。停止。意思就是说没有任何编译指令的执行。所以需要将该工程连接到我们的makefile(由自己的CmakeLists生成的)。具体操作:右击自己添加的项目,选择Properties,对build进行配置。

更多文章:
timeout on t2 timer什么意思(timer空调上什么意思)
2026年4月10日 18:15
jsp接收json文件(在jsp页面怎么接收json字符串,然后怎么把json字符串转换成对象,再之怎么遍历json对象)
2026年3月20日 12:00
思莱德品牌算大牌吗?思莱德所有中国零售店铺将于7月底关闭,该品牌为何坚持不下去了
2025年9月17日 23:15
extreme body mods(Extreme的歌曲歌词)
2026年2月13日 21:45
汇编语言和c语言哪个更高级(计算机中说的C语言是高级语言还是汇编语言)
2025年10月27日 03:45
java实现充值功能(我想用java自己写一个校园卡充值软件,需要掌握和用到哪些方面的东西求大神指教)
2026年8月20日 14:45
csdn手机网页弹窗(手机访问csdn弹出恶意广告如何解决)
2026年9月20日 00:00
个人主页设计思想(instagram个人主页怎么设计吸引人)
2025年5月25日 06:45
academic词性变化(学术,academic这个单词的名词是什么,不要academy)
2026年7月4日 17:00
m2u2课文翻译(谁能帮我翻译一下外研版英语初二下M2u2前两段的课文 急用谢谢!!!!1)
2026年9月19日 10:45
linkedin profile(LinkedIn Profile URL是什么意思)
2025年12月1日 15:45














