gpt4 book ai didi

c++ - 此 makefile 不更新目标文件

转载 作者:行者123 更新时间:2023-11-28 02:22:03 25 4
gpt4 key购买 nike

我从代码块项目(用 c++11 编写)生成了一个 makefile,因此我可以将 Atom 用作 IDE。但是当我更改头文件中的默认构造函数参数时,它不会更新目标文件,这真的很烦人。它只是再次链接现有的目标文件。但是,即使我对 .cpp 文件做了一点更改,它也会重新编译对象,而不会识别头文件中的更改。我发现的唯一快速修复方法是手动删除目标文件,因此它真的会生成全新的文件。我目前经常更改的标题部分如下所示:

VRParticles(): VRParticles(123){}

完整的 makefile 可在此处获得(使用 cbp2make 生成):https://github.com/Pfeil/polyvr/blob/master/Makefile(请注意,我只是一个相当新的贡献者,不对它的编程方式负责;))

我主要通过以下两个命令之一使用 makefile:

make -j 3 build_debug
make debug

请注意,当我删除 VRParticles.o 或执行 make cleanmake debug 时,一切都可以正常编译。

请注意,我对 makefile 的经验非常少。 makefile 基本上是这样工作的(记住上面完整版本的链接):

OBJ_DEBUG = # all object files

build_debug: before_debug out_debug after_debug

debug: before_build build_debug after_build

out_debug: before_debug $(OBJ_DEBUG) $(DEP_DEBUG)
$(LD) $(LIBDIR_DEBUG) -o $(OUT_DEBUG) $(OBJ_DEBUG) $(LDFLAGS_DEBUG) $(LIB_DEBUG)

$(OBJDIR_DEBUG)/src/addons/Bullet/Particles/VRParticles.o: src/addons/Bullet/Particles/VRParticles.cpp
$(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c src/addons/Bullet/Particles/VRParticles.cpp -o $(OBJDIR_DEBUG)/src/addons/Bullet/Particles/VRParticles.o

我真的很想提供更多信息,但我不知道还有什么重要的,所以请询问您是否需要更多信息。我的问题基本上是我需要如何修改 makefile(我猜这个文件包含问题)以便在需要时更新目标文件。无需重新编译所有内容。

我在 Linux (Ubuntu 14.04 LTS) 上。

最佳答案

如果我们查看您对 VRParticles.o 的依赖项:

VRParticles.o : src/addons/Bullet/Particles/VRParticles.cpp

您告诉 make 对象文件仅依赖于 VRParticles.cpp。因此,当您更新 VRParticles.h 时,这并不重要 - 您从未将 VRParticles.h 列为依赖项!值得庆幸的是,gcc 可以自动为您生成这些依赖项:

$(CC) $(other flag stuff) -MP -MMD -MF $(@:.o=.d) -o $@ -c $<

这将创建一个文件 VRParticles.d,它将具有依赖项的 make 样式规则,在本例中类似于:

VRParticles.o : VRParticles.d

所以在这一点上,我们所需要的就是包括它们:

DEPENDENCY_FILES = $(....)
-include $(DEPENDENCY_FILES)

关于c++ - 此 makefile 不更新目标文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32058597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com