我希望能够将我的 bin 和代码文件拆分到单独的目录中,因为在当前状态下管理起来变得困难。
我理想中希望拥有
project_dir
|-Makefile
|-run_tests.sh
|
|__source
| |-program1.cpp
| |-program2.cpp
|
|__bin
|-program1
|-program2
但是,如果不手动编写每个程序的规则,我就无法让它在我当前的系统中工作(请记住,每个程序都是一个单独的程序,而不是一系列链接在一起的对象)
#Current make system
BIN=./bin/
SOURCE=./source/
LIST=program1 program2...
all: $(LIST)
%: $(SOURCE)%.cpp
$(CC) $(INC) $< $(CFLAGS) -o $(BIN)$@ $(LIBS)
除了我看不到当前路径中的目标之外,它仍然有效,因此它认为即使源文件没有更改,它也总是会重建二进制文件。
我现在唯一的想法是编写一个程序来制作makefile,但我不想这样做。
最佳答案
你就快到了...
#Current make system
BIN=./bin/
SOURCE=./source/
LIST=$(BIN)/program1 $(BIN)/program2...
all: $(LIST)
$(BIN)/%: $(SOURCE)%.cpp
$(CC) $(INC) $< $(CFLAGS) -o $@ $(LIBS)
您还可以使用以下内容使LIST
更容易
PROG=program1 program2
LIST=$(addprefix $(BIN)/, $(PROG))
关于makefile - Makefile 如何使用单独的目录来存放源代码和二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9178285/