gpt4 book ai didi

makefile - 为什么 make 会删除我的临时文件?

转载 作者:行者123 更新时间:2023-12-01 10:56:42 26 4
gpt4 key购买 nike

我有一个简单的 Makefile,

.PHONY: clean

PROGRAMS=$(patsubst main%.cpp,example%,$(wildcard main*.cpp))

all: ${PROGRAMS}

GCCVERSION=$(shell gcc -dumpversion)

GLCFLAGS=$(shell pkg-config --cflags gl)
CPPFLAGS=-Wall -O2 ${GLCFLAGS}
ifeq "${GCCVERSION}" "4.5.2"
CXXFLAGS=-std=c++0x
else
CXXFLAGS=-std=c++11
endif

GLLIBS=$(shell pkg-config --libs gl)
LIBS=${GLLIBS} -lglut

example%: main%.o shaders.o fileutils.o
${CXX} $^ ${LIBS} -o $@

clean:
rm -f *.o ${PROGRAMS}

但是当我执行它时,它删除了 *.o 文件作为最后一个命令。我不知道为什么:
$ make
g++ -std=c++11 -Wall -O2 -I/usr/include/libdrm -c -o main01.o main01.cpp
g++ -std=c++11 -Wall -O2 -I/usr/include/libdrm -c -o shaders.o shaders.cpp
g++ -std=c++11 -Wall -O2 -I/usr/include/libdrm -c -o fileutils.o fileutils.cpp
g++ main01.o shaders.o fileutils.o -lGL -lglut -o example01
rm main01.o fileutils.o shaders.o

我的 Makefile 有什么问题吗?

最佳答案

中间文件被设计删除:见 Chained Rules在 GNU 制作手册中。

使用 .SECONDARY.PRECIOUS目标是保留您的珍贵临时文件。

关于makefile - 为什么 make 会删除我的临时文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14776258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com