makefile - Makefile 如何使用单独的目录来存放源代码和二进制文件?

标签 makefile

我希望能够将我的 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/

相关文章:

c++ - 对我的 Makefile 如何重新制作目标文件感到困惑

c++ makefile项目如何创建具有相同基本名称加上后缀和相同扩展名的文件列表

ubuntu - linux下安装软件的区别

c++ - Gnu Makefile - 处理依赖项

Makefile:过滤掉包含字符的字符串

c++ - 如何动态包含makefile

c - 模式规则和 VPATH,makefile

makefile - 我应该将 Makefile.in 推送到 git 存储库吗?

makefile - 在 Makefile 中使用不同的标志进行编译?

linux - 设备驱动。制作文件、外部模块