关于c++的头文件依赖】的更多相关文章

前言 Makefile自动生成头文件依赖是很常用的功能,本文的目的是想尽量详细说明其中的原理和过程. Makefile模板 首先给出一个本人在小项目中常用的Makefile模板,支持自动生成头文件依赖. CC = gcc CFLAGS = -Wall -O INCLUDEFLAGS = LDFLAGS = OBJS = seq.o TARGETS = test_seq .PHONY:all all : $(TARGETS) test_seq:test_seq.o $(OBJS) $(CC) -o…
核心命令:gcc -M *.h.*.cpp 转: 自动处理头文件的依赖关系 http://blog.csdn.net/su_ocean16/article/details/5374696 现在我们的Makefile写成这样: all: main main: main.o stack.o maze.o gcc $^ -o $@ main.o: main.h stack.h maze.h stack.o: stack.h main.h maze.o: maze.h main.h clean: -rm…
为什么需要自动生成头文件依赖? 编译单个源文件时,需要获取文件中包含的头文件的信息,但是一般的Makefile不会在规则中明确写明文件依赖的头文件,所以单独修改头文件后,不会导致包含头文件的源文件重新编译.如果每次手动的添加头文件依赖,又会非常的繁琐,所以需要一种自动生成依赖的方法. 编译器中神奇的选项 使用$(CC)中的-M命令就可以完美的解决问题,因为-M选项可以将源文件依赖的所有头文件,自动解析出来. 例子:在当前路径下,编辑test.c和test.h文件,test.c如下所示,test.…
http://www.cnblogs.com/yvesliao/p/3938730.html PS: 使用单向依赖 正在看google c++编程规范,里面对头文件依赖是这么说的: 1 2 3 4 5 6 7 8 9 10 11 使用前置声明(forward declarations)尽量减少.h文件中#include的数量. 当 一个头文件被包含的同时也引入了一项新的依赖(dependency),只要该头文件被修改,代码就要重新编译.如果你的头文件包含了其他头文件,这些头 文件的任何改变也将导…
概要 设想这样一个场景:我有一个类FunClass,它的声明位于FunClass.h,并且在FunClass.h中,我还引用了secret.h. 现在我需要把FunClass导出成DLL文件供别人二次开发. 这时我需要给别人以下文件: FunClass.h FunClass.lib FunClass.dll secret.h 然而我并不想把secret.h给别人!这个问题可以用一个虚类Fun(名字瞎起的,不重要,Java的风格是IFunClass,然而我们是C++) 来解决. 一个简单的例子 假…
正在看google c++编程规范,里面对头文件依赖是这么说的: 使用前置声明(forward declarations)尽量减少.h文件中#include的数量. 当一个头文件被包含的同时也引入了一项新的依赖(dependency),只要该头文件被修改,代码就要重新编译.如果你的头文件包含了其他头文件,这些头文件的任何改变也将导致那些包含了你的头文件的代码重新编译.因此,我们宁可尽量少包含头文件,尤其是那些包含在其他头文件中的. 使用前置声明可以显著减少需要包含的头文件数量.举例说明:头文件中…
http://gernotklingler.com/blog/open-source-tools-examine-and-adjust-include-dependencies/…
摘于:http://bbs.csdn.net/topics/120024677 (1)在makefile的依赖关系中用不用体现.h头文件?(2)如果在依赖关系中要体现.h头文件,应该体现到什么层次?==============================(1)在makefile的依赖关系中用不用体现.h头文件?============================== 下面是我的一些认识: 头文件中定义的是接口(函数接口,文件外全局变量和宏定义),它的作用是向调用文件封装函数的实现过程.在…
目标 即我们最终要生成的文件,make默认生成第一个目标,注意 makefile中tab和空格不是一回事,规则使用tab缩进,编辑器不要设置诸如"将tab替换为空格之类的选项",目标的结构如下 目标:依赖1 依赖2 <TAB>生成目标的规则 伪目标 无论如何也要执行的目标,需要使用.PHONY:标识 .PHONY:clean clean: rm -f *.o 常见伪目标 all 是所有目标的伪目标,功能是编译所有目标 clean 删除所有被make创建的文件 install…
CGAL 获取相关功能的依赖头文件 由于CGAL是header include only.只需要头文件就可以实现相关的功能.有时候为了实现一个简单的功能, 在研究具体实现的时候能够知道这个功能对应的头文件有哪些,就可以大概知道涉及到了哪些模块,可以从哪几个地方入手进行深入学习.于是此处给处理基于python,头文件依赖获取的示例脚本,如下: import os import re # Parameters include_paths = [ "C:/dev/CGAL-5.0.2/include/…