![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
makefile and cmake
文章平均质量分 78
arcslee
这个作者很懒,什么都没留下…
展开
-
makefile总结之三
命令的书写1.命令前加@则此命令不会被输出,但是执行结果会被输出。2.依赖目标新于目标时,也就是当规则的目标需要被更新时,make会一条一条的执行其后的命令。需要注意的是,如果你要让上一条命令的结果应用在下一条命令时,你应该使用分号分隔这两条命令。比如你的第一条命令是cd命令,你希望第二条命令得在cd之后的基础上运行,那么你就不能把这两条命令写在两行上,而应该把这两条命令写在一行上,用分号分隔。如原创 2013-04-18 17:20:35 · 502 阅读 · 0 评论 -
cmake --使用外部库和头文件
编写一个程序使用我们上一节构建的共享库。1,准备工作:请在/backup/cmake 目录建立 t4 目录,本节所有资源将存储在 t4 目录。2,重复以前的步骤,建立 src 目录,编写源文件 main.c,内容如下:#include int main(){HelloFunc();return 0;}编写工程主文件 CMakeLists.txtPROJECT(NEWHELLO)ADD_SUBDIR原创 2013-04-18 17:20:55 · 17625 阅读 · 0 评论 -
cmake ---动态库与静态库
本节的任务:1,建立一个静态库和动态库,提供 HelloFunc 函数供其他程序编程使用,HelloFunc向终端输出 Hello World 字符串。2,安装头文件与共享库。一,准备工作:在/backup/cmake 目录建立 t3 目录,用于存放本节涉及到的工程二,建立共享库cd /backup/cmake/t3mkdir lib在 t3 目录下建立 CMakeLists.txt,内容如下:P原创 2013-04-18 17:20:53 · 2831 阅读 · 0 评论 -
cmake初认识
cmake 的特点主要有:1,开放源代码,使用类 BSD 许可发布。http://cmake.org/HTML/Copyright.html2,跨平台,并可生成 native 编译配置文件,在 Linux/Unix 平台,生成 makefile,在苹果平台,可以生成 xcode,在 Windows 平台,可以生成 MSVC 的工程文件。3,能够管理大型项目,KDE4 就是最好的证明。4,简化编译构原创 2013-04-18 17:20:48 · 714 阅读 · 0 评论 -
模块的使用和自定义模块
本章我们将着重介绍系统预定义的 Find 模块的使用以及自己编写 Find 模块,系统中提供了其他各种模块,一般情况需要使用 INCLUDE 指令显式的调用,FIND_PACKAGE 指令是一个特例,可以直接调用预定义的模块。其实使用纯粹依靠 cmake 本身提供的基本指令来管理工程是一件非常复杂的事情,所以,cmake 设计成了可扩展的架构,可以通过编写一些通用的模块来扩展 cmake.在本章,原创 2013-04-18 17:21:03 · 1439 阅读 · 1 评论 -
makefile总结之七
隐含规则:make会自动推导一些命令,-r可以禁用自动推导。在make的“隐含规则库”中,每一条隐含规则都在库中有其顺序,越靠前的则是越被经常使用的,所以,这会导致我们有些时候即使我们显示地指定了目标依赖,make也不会管。如下面这条规则(没有命令): foo.o : foo.p依赖文件“foo.p”(Pascal程序的源文件)有可能变得没有意义。如果目录下存在了“foo.c”文件,那么我们原创 2013-04-18 17:20:45 · 589 阅读 · 0 评论 -
makefile总结之六
make运行直接输入make,则会编译默认的终极目标,如果只需要编译其中一个目标,则可以直接make后加目标名,目标也可以是伪目标,如clean(惯例是清理)make参数:“-b”“-m”这两个参数的作用是忽略和其它版本make的兼容性。“-B”“--always-make”认为所有的目标都需要更新(重编译)。“-C ”“--directory=”指定读取makefile的目录。如果有多个“-C”原创 2013-04-18 17:20:43 · 595 阅读 · 0 评论 -
makefile总结之五
条件判断:ifeqifneqelseendififdef/ifndef ifeq (, ) ifeq '' '' ifeq "" "" ifeq "" '' ifeq '' "" 示例一: bar = foo = $(bar) ifdef foo frobozz = yes else frobozz = no endif原创 2013-04-18 17:20:40 · 467 阅读 · 0 评论 -
makefile总结之四
变量:1.变量前加$,最好用()或{}把变量括起来。在makefile中这只是替换,如: foo = c prog.o : prog.$(foo) $(foo)$(foo) -$(foo) prog.$(foo)展开后得到: prog.o : prog.c cc -c prog.c2.防止递归定义A = $(B) B = $(A)这会原创 2013-04-18 17:20:37 · 557 阅读 · 0 评论 -
makefile总结之二
书写规则:makefile中只应该有一个最终目标,其他的目标只是被这个目标所连带出来的。第一个规则中的目标被确立为最终目标,若第一个规则中有多个目标,则第一个目标被视为最终目标。\可作为换行符规则表明了文件的依赖关系和如何生成文件的命令。如果命令和依赖关系在同一行则之间要加分号,不在同一行需要在命令前加TAB键make支持的三个通配符,* ? [...],含义与B-Shell一样。~指当前用户的$原创 2013-04-18 17:20:32 · 540 阅读 · 0 评论 -
makefile总结之一
概述:makefile的好处:可以自动化编译,make这个命令工具在/usr/bin下,用于解释makefile。程序的编译:预处理,汇编,编译,链接。链接:主要链接函数和全局变量,使用.o文件。可以将多个.o文件打包成一个库文件makefile的规则:若整个工程未被编译过则编译所有的源文件并链接,如果某些.c文件被修改则只编译被修改的c文件并链接,如果某些头文件被修改则编译引用此头文件的c文件并原创 2013-04-18 17:20:29 · 630 阅读 · 0 评论 -
cmake----外部编译与安装
本小节的任务是让前面的 Hello World 更像一个工程,我们需要作的是:1,为工程添加一个子目录 src,用来放置工程源代码;2,添加一个子目录 doc,用来放置这个工程的文档 hello.txt3,在工程目录添加文本文件 COPYRIGHT, README;4,在工程目录添加一个 runhello.sh 脚本,用来调用 hello 二进制4,将构建后的目标文件放入构建目录的 bin 子目录原创 2013-04-18 17:20:50 · 2550 阅读 · 0 评论 -
cmake变量
一,cmake 变量引用的方式:前面我们已经提到了,使用${}进行变量的引用。在 IF 等语句中,是直接使用变量名而不通过${}取值二,cmake 自定义变量的方式:主要有隐式定义和显式定义两种,前面举了一个隐式定义的例子,就是 PROJECT 指令,他会隐式的定义_BINARY_DIR 和_SOURCE_DIR 两个变量。显式定义的例子我们前面也提到了,使用 SET 指令,就可以构建一个自定义变原创 2013-04-18 17:20:58 · 1087 阅读 · 0 评论