Compilation 生成文件似乎忽略%.o通配符

Compilation 生成文件似乎忽略%.o通配符,compilation,compiler-errors,makefile,Compilation,Compiler Errors,Makefile,我目前正试图在雪豹上编译Julia语言解释器,这让我花了不少时间,但我想我几乎已经完成了 最新的障碍是以下错误: make: *** No rule to make target `jltypes.o', needed by `/Users/arman/julia/usr/lib/libjulia-release.dylib'. Stop. makefile的相关部分如下所示: SRCS = \ jltypes gf ast builtins module codegen interpret

我目前正试图在雪豹上编译Julia语言解释器,这让我花了不少时间,但我想我几乎已经完成了

最新的障碍是以下错误:

make: *** No rule to make target `jltypes.o', needed by `/Users/arman/julia/usr/lib/libjulia-release.dylib'.  Stop.
makefile的相关部分如下所示:

SRCS = \
jltypes gf ast builtins module codegen interpreter \
alloc dlload sys init task array dump toplevel jl_uv jlapi profile
...
OBJS = $(SRCS:%=%.o)
...
%.o: %.c $(HEADERS)
    @$(PRINT_CC) $(CC) $(CPPFLAGS) $(CFLAGS) $(SHIPFLAGS) -DNDEBUG -c $< -o $@
%.do: %.c $(HEADERS)
    @$(PRINT_CC) $(CC) $(CPPFLAGS) $(CFLAGS) $(DEBUGFLAGS) -c $< -o $@
%.o: %.cpp $(HEADERS)
    @$(PRINT_CC) $(CXX) $(call exec,$(LLVM_CONFIG) --cxxflags) $(CPPFLAGS) $(CXXFLAGS) $(SHIPFLAGS) -c $< -o $@
%.do: %.cpp $(HEADERS)
    @$(PRINT_CC) $(CXX) $(call exec,$(LLVM_CONFIG) --cxxflags) $(CPPFLAGS) $(CXXFLAGS) $(DEBUGFLAGS) -c $< -o $@
...
$(BUILD)/$(JL_LIBDIR)/libjulia-release.$(SHLIB_EXT): julia.expmap $(OBJS) flisp/libflisp.a support/libsupport.a $(LIBUV)
@$(PRINT_LINK) $(CXX) $(SHIPFLAGS) $(OBJS) $(RPATH_ORIGIN) -shared -o $@ $(LDFLAGS) $(LIBS) $(SONAME)
$(INSTALL_NAME_CMD)libjulia-release.$(SHLIB_EXT) $@
SRCS=\
JLGF ast内置模块codegen解释器\
alloc dlload sys init任务数组转储顶级jl_uv jlapi配置文件
...
OBJS=$(SRCS:%=%.o)
...
%.o:%.c$(标题)
@$(PRINT_CC)$(CC)$(CPPFLAGS)$(CFLAGS)$(SHIPFLAGS)-DNDEBUG-c$<-o$@
%.do:%.c$(标题)
@$(PRINT_CC)$(CC)$(CPPFLAGS)$(CFLAGS)$(DEBUGFLAGS)-c$<-o$@
%.o:%.cpp$(标题)
@$(PRINT_CC)$(CXX)$(call exec,$(LLVM_CONFIG)——cxflags)$(CPPFLAGS)$(cxflags)$(SHIPFLAGS)-c$<-o$@
%.do:%.cpp$(标题)
@$(PRINT_CC)$(CXX)$(call exec,$(LLVM_CONFIG)——cxflags)$(CPPFLAGS)$(cxflags)$(DEBUGFLAGS)-c$<-o$@
...
$(BUILD)/$(JL_LIBDIR)/libjulia发行版。$(SHLIB_EXT):julia.expmap$(OBJS)flisp/libflisp.a support/libsupport.a$(LIBUV)
@$(打印链接)$(CXX)$(SHIPFLAGS)$(OBJS)$(RPATH\U源)-共享-o$@$(LDFLAGS)$(LIBS)$(SONAME)
$(INSTALL_NAME_CMD)libjulia release.$(SHLIB_EXT)$@
一切似乎都安排妥当了。据我所知,在查找
jltypes.o
的规则时,Make应该使用
%.o
规则;然而,显然它根本找不到一条规则


让我疯狂的是,它在Lion上编译得很好。我比较了makefile、它们的include和Make程序本身,但没有结果。这是我第一次亲身体验makefiles,因此提前感谢您的耐心和帮助,如果需要包含任何其他信息,请告诉我。

没有
%.o
规则。有一个
%.o:%.c$(头)
(及其配套的cpp)规则。这意味着它可以使用它从
jltypes.c
$(HEADERS)
构建
jltypes.o
,如果可以找到它们的话。由于源文件可能在两个系统上都存在,因此我假设头列表的计算方式不同(而且是错误的)

请注意,cvs版本的最近刚刚获得了一个新的选项变量
MAKEPP_DEBUG
,这使得它可以编写有关这些内容的详细信息。它们可以通过实用程序
makepplog
查看


还有很多事情要做。除了做GNU make所能做的几乎所有事情外,还有很多更有用的事情,您甚至可以通过一些Perl编程来扩展您的make文件。

这是一个标题问题,您是对的。感谢您提供有关
makepp
的提示;调试功能对这类事情总是有很大帮助。