在我们的Makefile规则中,main.o只依赖于main.c (Makefile 第18-19行),而在第二次执行make的时候,main.c显然并没有被修改,所以main.o不会重新生成,自然可执行文件就不会重新生成。这里的问题根源在于,main.c它是依赖于build_info.h的,而这个依赖关系并没有体现在Makefile中,所以整个编译流程达不到我们的预期...
一个.c文件include另一个.h头文件,使用Makefile来构建(编译)应用程序。 第一次编译、执行,很正常! 但是此时,如果修改了.h头文件,再次编译时,就出现问题了: 预期的执行流程是:make发现.h头文件的修改时间更新,于是重新编译包含这个头文件的所有.c文件。 可实际的结果却是:make并没有识别出.h头文件的修改。 ...
Makefile 只修改了.h头文件,编译为什么不起作用? 解决方案 添加了 -include *.d 指令; gcc 编译指令中,添加了 -MMD 参数; -include $(OBJ_FILES:%.o=%.d) %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ M,-MM,-MMD,-MF,-MT区别 https://programmer.group/gcc-m-mm-mmd-mf-mt.html Ref ...
一切工作正常,除了一个小的但烦人的细节:如果我修改cpp文件,则可以执行make并且一切都正确更新,但是如果我修改头文件,则必须删除所有内容并从头开始重新编译(这就是为什么我有那个难看的rebuild目标)的原因,否则编辑将无效。 有没有一种方法可以使情况更好,而无需重新构建整个代码? 编辑 我尝试了这个makefile 1 2 ...
Makefile添加头文件依赖,解决CPP文件包含的头文件修改了,但CPP文件不重新编译的问题 PROJECT_SRC_DEPS:= (patsubst %.cpp, %.o.d, $(PROJECT_SRC))) PROJECT_SRC_DEPS:= (OBJECT_FILE)) g++ xxxxxxx -MD -MF @ -include $(PROJECT_SRC_DEPS)...
声明: 本网站大部分资源来源于用户创建编辑,上传,机构合作,自有兼职答题团队,如有侵犯了你的权益,请发送邮箱到feedback@deepthink.net.cn 本网站将在三个工作日内移除相关内容,刷刷题对内容所造成的任何后果不承担法律上的任何义务或责任
由上可知,经过改造后的Makefile是实现了我们的需求,每次build_info.h重新生成,导致main.c包含了build_info.h也会重新编译,而a.c和b.c没有被修改,所以在未执行make clean的情况下,a.c和b.c是不会被重新编译的,每次都是仅仅main.c被再次编译,从而重新生成新的test可执行文件。这样就是已经达到了【当C文件包...
一个.c文件include另一个.h头文件,使用Makefile来构建(编译)应用程序。 第一次编译、执行,很正常! 但是此时,如果修改了.h头文件,再次编译时,就出现问题了: 预期的执行流程是:make发现.h头文件的修改时间更新,于是重新编译包含这个头文件的所有.c文件。
由上可知,经过改造后的Makefile是实现了我们的需求,每次build_info.h重新生成,导致main.c包含了build_info.h也会重新编译,而a.c和b.c没有被修改,所以在未执行make clean的情况下,a.c和b.c是不会被重新编译的,每次都是仅仅main.c被再次编译,从而重新生成新的test可执行文件。这样就是已经达到了【当C文件包...