【发布时间】:2014-06-12 16:54:47
【问题描述】:
我必须为具有以下文件夹结构的项目构建一个 makefile:
1) 所有的标题都在 /include 中
2) 在 /provided_objects 中提供了一些 .o 编译的实现(没有 .c)
3) 我创建的源代码必须在/src中
4) 我的 C 代码生成的 .o 文件必须在 /built_objects 中
5) 可执行文件在根目录中
我最初的目的是用我的实现替换 /provided_objects 中的一些实现,记住我的实现可以使用我没有实现的头文件定义的函数。已经有一个默认的 makefile 包含(以及更小的细节):
LD = gcc
LDFLAGS = -lm
OBJDIR = provided_objects
OBJECTS = $(OBJDIR)/obj1.o \ /$(OBJDIR)/obj2.o ...
MY_OBJECTS =
quiet-command = $(if $(VERB),$1,$(if $(2),@echo $2 && $1, @$1))
all : $(OBJDIR) $(PROG)
$(PROG) : $(OBJECTS) $(MY_OBJECTS)
$(call quiet-command, $(LD) $^ -o $@, " LD $@" $(LDFLAGS))
$(OBJDIR):
$(call quiet-command, mkdir -p $(OBJDIR),)
我应该删除我实现的在 OBJECTS 中命名的条目并在 MY_OBJECTS 中引用它们。我的问题是,我该怎么做?我在 makefile 方面不是很有经验,而且我发现研究的链接并没有解决我的限制。
提前致谢!
【问题讨论】:
-
为什么是
quit-command?而且,最好将其删除,因为它只会使您的 makefile 变得复杂,而不会给您的问题添加任何内容。 -
正如我所说,它是一个默认的 makefile。它是给我的,我应该改变它。我不知道那是做什么的。