【发布时间】:2016-09-06 13:09:13
【问题描述】:
我需要写一个Makefile来编译下一个项目:
project
\_ src
\_ *.c
\_ include
\_ *.h
\_ build
\_ Makefile
\_ obj
\_ output_library.so
我是 Makefile 语言的新手,现在我将所有文件都放在同一个目录中,并使用这个 Makefile 进行编译:
SRC=../src
OUTDIR=../obj
CFLAGS=-ggdb -O1 -fPIC -Wall
LDFLAGS=-shared -ggdb -fPIC -Wall
all: libX.so
libX.so: X1.o X2.o X3.c
$(CC) -o $@ $^ $(LDFLAGS)
clean:
rm *.so *.o || true
但我收到提示:
make: *** 没有规则来制作目标“X1.o”,需要 'libX.so'。
我觉得我没有使用 $SRC 和 $OUTDIR 很明显
【问题讨论】:
-
你到底在问什么?该问题包含详细信息,但我找不到任何关于您的实际问题的描述。
-
(您可以在我对上面链接的 Q/A 的回答中找到您需要的所有内容。这可能有点复杂,但您应该能够根据您的结构进行调整)
-
谢谢,尽管您的代码向我提出了很多问题,例如,执行 SOURCEDIR := .. (Vs) SOURCEDIR=.. 有什么区别。
-
你可以找到“=”和“:="in the manual的解释。