2014-09-29 66 views
0

我的问题是一个非常简单的问题我只是想将所有不是源代码的文件导出到bin文件夹中,但是我发现所有答案似乎都有松散的复杂makefile文件代码没有任何指示将其放置在何处或者非常复杂的makefile中。我没有制作文件的经验,文档看起来非常差,所以如果能给我这个问题的最简单的答案,我会非常高兴。将.o和二进制文件导出到bin文件夹

# 
# Makefile for 2INC0 Interprocess Communication 
# 
# (c) Fontys 2010, Joris Geurts 
# 
BIN=./bin/ 

BINARIES = $(BIN)prime 

CC = gcc 
CFLAGS = -Wall -g -c 
LDLIBS = -lrt -lX11 


%.o: %.c 
    $(CC) $(CFLAGS) -c $< -o $(BIN)[email protected] 

all: $(BINARIES) 

clean: 
    rm -f *.o $(BINARIES) 

prime: prime.o 

prime.o: prime.c prime.h 

回答

1

试试这个修改:

$(BIN)%.o: %.c 
    $(CC) $(CFLAGS) -c $< -o [email protected] 

$(BIN)prime: $(BIN)prime.o 

$(BIN)prime.o: prime.h 
0

的(几乎普遍遵循)的约定是有一个特殊的目标install无条件地将所有从构建树所需的文件的到位。这个地方通常可以配置一个变量。

这样,您可以随时在构建和安装完成后删除构建树。

所以,如果你需要复制的文件是可执行文件,你得到的东西是这样的:

DESTDIR = /usr/local 

OBJS = $(*.c:%c=%.o) 
EXES = $(OBJS:%.o=) 

install: $(EXES)   
    cp -p $+ $(DESTDIR/bin/ 

(请注意:未经测试)。您使用哪个版本的make