【问题标题】:Makefile - Generate Targets from SourcesMakefile - 从源生成目标
【发布时间】:2011-08-14 22:04:57
【问题描述】:

我正在尝试使用 make 构建越来越多的 .cpp 文件。它们都驻留在子目录 src/ 中。我想将每个文件编译成它自己的可执行文件,驻留在 bin/. 这是我迄今为止尝试过的,但它不起作用,而且由于我是新手,所有的模式、变量等都很难确定扩展成什么等等。

CXX = g++
CXXFLAGS = -Wall -Wextra -pedantic

SRC = $(wildcard src/*.cpp)
BIN = $(patsubst src/%.cpp,bin/%,$(SRC))

all: $(BIN)

%: scr/%.cpp
    $(CXX) $(CXXFLAGS) $< -o $@

另外,有没有办法只显示 BIN 的内容,例如让我看到发生了什么?

【问题讨论】:

  • make 中有许多约定,最好遵循。 CC 是 C 编译器,CXX 是 C++ 编译器,CFLAGS 是 $(CC) 的标志,CXXFLAGS 是 $(CXX) 的标志,CPPFLAGS 是预处理器的标志。

标签: makefile


【解决方案1】:

这就是你的最终扩展的样子

file: scr/bin/file.cpp

为什么不这样做?

BIN = $(patsubst src/%.cpp,%,$(SRC))

all: $(addprefix bin/, $(BIN))

bin/% : src/%
    $(GCC) $(FLAGS) $< -o $@

我认为这行得通?

至于显示BIN的内容

all: $(addprefix bin/, $(BIN))
    @echo $(BIN)

【讨论】:

  • 非常感谢!至少我离得不远:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 2010-09-10
  • 1970-01-01
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多