目标不知何故没有被创建
Target somehow doesn't get created
我有一个没有创建的目标,但它是直接依赖项。而且没有错误信息。
这是生成文件:
PREFIX?=/home/jenia/learn-c-the-hard-way
CFLAGS=-g -Wall -I${PREFIX}/lib/include
LDFLAGS=-L${PREFIX}/lib
INSTALL_DIR=/home/jenia/learn-c-the-hard-way/apps
all: set-manipulation
set-manipulation: main.o
install: all
install -d $(INSTALL_DIR)/set-manipulation
install set-manipulation $(INSTALL_DIR)/set-manipulation
clean:
rm -f *.o
rm -f set-manipulation
rm -rf *.dSYM
我得到的是 main.o
文件,而不是 set-manipulation
文件,它是程序的名称。
就像在更大的程序中一样,我想先创建目标文件,然后再创建程序。喜欢
all: my-amazing-prog
my-amazing-prog: A.o B.o C.o D.o
...
然后以文件结束:
A.o,
B.o,
C.o,
D.o,
my-amazing-prog
所以我不明白为什么在这种情况下我在创建 object.o 文件和依赖于它们的程序时遇到麻烦。
P.S.
以防万一,目录结构如下:
/home/jenia/learn-c-the-hard-way/lib:
drwxr-xr-x 2 jenia jenia 4096 Nov 1 12:47 include
-rwxr-xr-x 1 jenia jenia 6804 Nov 1 12:47 set_theory.a -- 50
-rwxr-xr-x 1 jenia jenia 9664 Nov 1 12:47 set_theory.so -- 11
/home/jenia/learn-c-the-hard-way/lib/include:
-rw-r--r-- 1 jenia jenia 85 Nov 1 12:47 bag.h -- 3
-rw-r--r-- 1 jenia jenia 64 Nov 1 12:47 new.h -- 2
-rw-r--r-- 1 jenia jenia 92 Nov 1 12:47 object.h -- 3
-rw-r--r-- 1 jenia jenia 318 Nov 1 12:47 set.h -- 16
您需要一条规则告诉 make 如何从 main.o
创建 set-manipulation
。这部分:
set-manipulation: main.o
只指定依赖关系,不指定命令。使用,例如
set-manipulation: main.o
$(CC) -o "$@" main.o
我很确定如果
my-amazing-prog: A.o B.o C.o D.o
does create my-amazing-prog
you do 有一些与之相关的命令。 Make 有一些内置规则可以从单个源文件 prog.c
创建程序 prog
,也许这就是您在其他地方看到的工作方式?
我有一个没有创建的目标,但它是直接依赖项。而且没有错误信息。
这是生成文件:
PREFIX?=/home/jenia/learn-c-the-hard-way
CFLAGS=-g -Wall -I${PREFIX}/lib/include
LDFLAGS=-L${PREFIX}/lib
INSTALL_DIR=/home/jenia/learn-c-the-hard-way/apps
all: set-manipulation
set-manipulation: main.o
install: all
install -d $(INSTALL_DIR)/set-manipulation
install set-manipulation $(INSTALL_DIR)/set-manipulation
clean:
rm -f *.o
rm -f set-manipulation
rm -rf *.dSYM
我得到的是 main.o
文件,而不是 set-manipulation
文件,它是程序的名称。
就像在更大的程序中一样,我想先创建目标文件,然后再创建程序。喜欢
all: my-amazing-prog
my-amazing-prog: A.o B.o C.o D.o
...
然后以文件结束:
A.o,
B.o,
C.o,
D.o,
my-amazing-prog
所以我不明白为什么在这种情况下我在创建 object.o 文件和依赖于它们的程序时遇到麻烦。
P.S.
以防万一,目录结构如下:
/home/jenia/learn-c-the-hard-way/lib:
drwxr-xr-x 2 jenia jenia 4096 Nov 1 12:47 include
-rwxr-xr-x 1 jenia jenia 6804 Nov 1 12:47 set_theory.a -- 50
-rwxr-xr-x 1 jenia jenia 9664 Nov 1 12:47 set_theory.so -- 11
/home/jenia/learn-c-the-hard-way/lib/include:
-rw-r--r-- 1 jenia jenia 85 Nov 1 12:47 bag.h -- 3
-rw-r--r-- 1 jenia jenia 64 Nov 1 12:47 new.h -- 2
-rw-r--r-- 1 jenia jenia 92 Nov 1 12:47 object.h -- 3
-rw-r--r-- 1 jenia jenia 318 Nov 1 12:47 set.h -- 16
您需要一条规则告诉 make 如何从 main.o
创建 set-manipulation
。这部分:
set-manipulation: main.o
只指定依赖关系,不指定命令。使用,例如
set-manipulation: main.o
$(CC) -o "$@" main.o
我很确定如果
my-amazing-prog: A.o B.o C.o D.o
does create my-amazing-prog
you do 有一些与之相关的命令。 Make 有一些内置规则可以从单个源文件 prog.c
创建程序 prog
,也许这就是您在其他地方看到的工作方式?