[英]makefile performs target even without any changes
我有一個可以正常工作的簡單makefile
,但是即使沒有發生任何更改,它似乎也可以執行all
目標。 我期望一個
make: Nothing to be done for 'all'.
消息,但是每當我調用make
時,它都會繼續執行目標。 這是我的簡單makefile:
BASEDIR = /home/someuser/STA
SRC_DIR = ${BASEDIR}/src
OBJ_DIR = ${BASEDIR}/obj
INC_DIR = ${BASEDIR}/inc
SRC_FILES = $(wildcard ${SRC_DIR}/*.cpp)
SRC_FILES_NOTDIR = $(notdir ${SRC_FILES})
OBJ_FILES_NOTDIR = $(patsubst %.cpp, %.cpp.o, ${SRC_FILES_NOTDIR})
OBJ_FILES = $(addprefix ${OBJ_DIR}/,${OBJ_FILES_NOTDIR})
INC_FILES = $(wildcard ${INC_DIR}/*.h)
all: ${OBJ_FILES}
g++ ${OBJ_FILES} -o program
${OBJ_DIR}/%.cpp.o: ${SRC_DIR}/%.cpp ${INC_FILES}
g++ -I${INC_DIR} -o $@ -c $<
這是我兩次撥打make
時打印到終端的內容:
$ make
g++ <somedir/file1>.cpp.o <somedir/file2>.cpp.o -o program
$ make
g++ <somedir/file1>.cpp.o <somedir/file2>.cpp.o -o program
更換all
這不是一個文件,不存在(之所以做出嘗試構建各一次)的program
,一個真正的文件,使可以看到。 如果您真的想要一個all
符號目標,請將其聲明為phony,並添加一個不帶配方的規則,以告知all
取決於program
:
.PHONY: all
all: program
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.