我看過了,發現幾個答案看起來像是與這個問題有關,但似乎沒有任何幫助。使用C++的自動刪除功能
這是通常的故事 - 我有一個.hpp和.cpp文件的文件夾,我想將它們編譯爲.o文件,然後只有在文件所依賴的文件被更改時才重新編譯文件。
我目前的Makefile:
SRCS = $(shell find ../Includes/ -name "*.cpp")
DEPS = $(SRCS:.cpp=.d)
OBJS = $(SRCS:.cpp=.o)
all: $(DEPS) $(OBJS)
# Create the dependency files
%.d : %.cpp
clang++ -MM $< -o [email protected] -c -std=c++11
# Include the dependency files
include $(DEPS)
# Compile the source files
%.o : %.cpp
clang++ -c -Wall -std=c++11 $< -o [email protected]
我這個跑幾次(之前我運行make所以存在依賴文件,當我包括他們絕對應該存在)。我也嘗試將%.d添加到%.o的依賴項中。
基本上所有這一切發生的是'touch'ing .cpp導致.o和.d文件被重新生成,並且觸摸.hpp文件(在.d文件中列出的其他文件) 什麼也沒做。
舉例相關文件:
SomeFile.o : ../Includes/SomeFile.cpp \
../Includes/SomeFile.hpp ../Includes/SomeOtherFile.hpp
在依賴文件中,哪些目錄連接到hpp文件名? – NovaDenizen 2013-03-08 12:44:21
隨着我給你的代碼,依賴文件沒有爲hpp文件生成(我剛纔給出了一個嘗試,似乎沒有幫助),我編輯我的問題給一個示例d文件。 – Peter 2013-03-08 13:13:20
也許scons的將是你一個更好的工具 - http://www.scons.org – 2013-03-08 13:19:48