gpt4 book ai didi

linux - Makefile 异常 : Invoke `make` and it appears to be running another makefile

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:20 25 4
gpt4 key购买 nike

我有以下 Makefile:

OBJDIRS       = Runtime/Core/Common Runtime/Core/Graphic/SymbolXLib Runtime/Core/Map Runtime/Core/SymbolDictionary \
Runtime/CoreClient/RuntimeCoreJava
OBJS = $(wildcard $(OBJDIRS:=/*.o))
TARGETA = libRuntimeCoreJava.a
TARGETD = libRuntimeCoreJava.so
TARGETD1 = $(TARGETD).1
TARGETD2 = $(TARGETD).1.0
TARGETD3 = $(TARGETD).1.0.0
AR = ar cqs
LINK = g++
SYMLINK = ln -f -s
LDFLAGS = -shared -Wl,-soname,libRuntimeCoreJava.so.1

all : $(TARGETD) $(TARGETA)

$(TARGETD) : $(OBJS)
echo "Building Dynamic Lib using "$(OBJS)
#$(CXX) $(LDFLAGS) $(OBJS)
#$(SYMLINK) $(TARGETD) $(TARGETD1)
#$(SYMLINK) $(TARGETD) $(TARGETD2)
#$(SYMLINK) $(TARGETD) $(TARGETD3)

$(TARGETA) : $(OBJS)
echo "Building Static Lib using "$(OBJS)
#$(AR) $(TARGETA) $(OBJS)

当我在与 Makefile 相同的级别运行 make 时,它​​似乎调用了另一个与此无关的 makefile。

In file included from Runtime/Core/Common/JNICallback.cpp:16:
Runtime/Core/Common/stdafx.h:33:17: error: log.h: No such file or directory
Runtime/Core/Common/stdafx.h:34:23: error: Namespace.h: No such file or directory
Runtime/Core/Common/JNICallback.cpp:18:25: error: JNICallback.h: No such file or directory
make: *** [Runtime/Core/Common/JNICallback.o] Error 1

如您所见,我什至没有构建任何源代码,只是获取已编译的目标文件并将它们放入静态和动态库中。为什么要编译源代码?下面是我的目录结构。

[matt6809@hogganz400 src]$ ls -l
drwxrwxr-x 2 matt6809 matt6809 4096 Mar 2 11:47 binDebug
drwxrwxr-x 2 matt6809 matt6809 4096 Feb 15 13:31 binRelease
drwxrwxr-x 2 matt6809 matt6809 4096 Feb 22 11:03 include
drwxrwxr-x 2 matt6809 matt6809 4096 Mar 5 10:55 libDebug
drwxrwxr-x 2 matt6809 matt6809 4096 Feb 15 11:25 libRelease
-rw-rw-r-- 1 matt6809 matt6809 824 Mar 6 15:48 Makefile
drwxrwxr-x 5 matt6809 matt6809 4096 Feb 14 16:03 Runtime
drwxrwxr-x 6 matt6809 matt6809 4096 Feb 14 16:43 System

我 100% 确定我与生成文件位于同一目录中。给了什么?

最佳答案

你的目标有目标文件作为先决条件(无论目标文件恰好在那些目录中)。目标文件已经存在,但 Make 将检查它们以查看它们是否已过时并且应该重建。如果它检查目标文件,找到相应的较新的源文件,尝试重新编译目标文件并且缺少头文件,您将收到一条错误消息,如您所见。没有证据表明另一个 makefile 在起作用。

有几种方法可以解决这个问题。 最简单的方法可能是将源文件从运行 Make 的目录中移开(反之亦然)。

编辑:
@eriktous 指出了一个更好的方法:使用 make -r 来禁用内置规则。

关于linux - Makefile 异常 : Invoke `make` and it appears to be running another makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9593782/

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