Gcc 在makefile中查找make目标
我的makefile中当前有以下内容:Gcc 在makefile中查找make目标,gcc,build,makefile,Gcc,Build,Makefile,我的makefile中当前有以下内容: ifneq ($(MAKECMDGOALS),clean) -include $(DEPS_debug) -include $(DEPS_unittest) -include $(DEPS_release) endif DEPS\uuu集合都相当大,因为它们是由gcc生成的,所以我只想在绝对必要时包含这些依赖项 现在的情况是,任何时候我使用这个makefile做除清理之外的任何事情,都会因为加载所有依赖项文件而导致两秒钟的等待。是的,它可能不必要地检查大
ifneq ($(MAKECMDGOALS),clean)
-include $(DEPS_debug)
-include $(DEPS_unittest)
-include $(DEPS_release)
endif
DEPS\uuu
集合都相当大,因为它们是由gcc
生成的,所以我只想在绝对必要时包含这些依赖项
现在的情况是,任何时候我使用这个makefile做除清理之外的任何事情,都会因为加载所有依赖项文件而导致两秒钟的等待。是的,它可能不必要地检查大量库头的更改,但如果它已经不能很好地工作,以至于我不想修改它,我会被诅咒的
我想-当我的make目标是debug
时,只包括$(DEPS_debug)
,等等
有比MAKECMDGOALS
更好的变量吗?我所看到的一个问题是,如果我使用MAKECMDGOALS
断言包含依赖项,如果我稍后向makefilefoo:debug release
添加一个条目并运行makefoo
,它将不会加载任何依赖项 如何生成依赖项
gcc -M ... source.c
vs
前者列出了/usr/include
中的标题;后者没有。这是我一直使用的行的格式:$(CC)$(CFLAGS_unittest)$(INCLUDE)-MM-MT$@-MF$(patsubst%.o,%.d,$@)$
该行的相关部分是-MM
;-MT
和-MF
更改依赖项输出中包含的目标文件(而不是file.o
)以及输出的位置。因此,您已经在修剪列表以排除系统标题;这只意味着您有大量的编译依赖项。您可能应该研究减少依赖头数量的常用技术—转发声明,等等。还应该查看GCC的输出,以确保单个文件不会重复太多。我使用的其中一个标题包括一个不同名称的文件(。/belib/。/belib/。/incl/machine.h
,。/incl/。/incl/machine.h
,。/incl/machine.h
),因为代码易于使用。/include>。/include/machine.h“
在使用机器配置标题的任何大量标题中。这是因为在头所在的目录中(一个只包含头的普通C文件)使用了gcc-MM
。
gcc -MM ... source.c