自动规则会在未指定的情况下用于构建目标文件吗?

问题描述 投票:0回答:1

我有一个旧项目,在目录中有几个C ++源代码和头文件,这些文件是使用ccgwin和GCC和makefile内置在cygwin中的。在编辑makefile文件以将所有临时文件和输出文件移动到子目录中时,构建目标文件的规则没有任何作用。

$(BIN): $(OBJ)
    $(CXX) $(LDFLAGS) -o $(BIN) $^

%.o: %.c
    $(CXX) $(INC) $(CXXFLAGS) $@ -c -o $<

以下makefile仍将构建输出二进制文件,而没有任何规则可从源代码构建目标文件。

INC=-I.
CXX=g++
CXXFLAGS=-std=c++11 -Wall -Wextra -Wconversion -pedantic -O2 -g
LDFLAGS=
CLEAN_FILES=*.o *.out *.stackdump *.exe *.gcno *.gcda
BIN=app
SRC=$(wildcard *.cpp)
OBJ=$(SRC:%.cpp=%.o)

all: $(BIN)

$(BIN): $(OBJ)

.PHONY: clean
clean:
    rm -f $(CLEAN_FILES)

这种自动行为叫什么?

makefile gnu-make
1个回答
0
投票

无需定义即可知道的规则集称为built-in rules。该手册列出了大多数,但不是全部。您可以运行make -p -f/dev/null来查看所有列表。

© www.soinside.com 2019 - 2024. All rights reserved.