我有一个非常简单的makefile,基本上可以执行以下操作:
# Pre-compiled header
CORE_PCH_FILENAME =Core.h
CORE_PCH:
$(CXX) $(CXX_CFLAGS) -x c++-header $(CORE_PCH_FILENAME)
#Objects
obj/%.o: CORE_PCH %.cpp obj/%.d
@mkdir -p obj
$(CXX) $(CXX_CFLAGS) -c $*.cpp -o $@
#Dependencies
obj/%.d: %.cpp
@mkdir -p obj
$(CXX) $(CXX_CFLAGS) -MM -MT obj/$*.o -MF $@ $<
Run Code Online (Sandbox Code Playgroud)
我的问题是,第一次创建Core.h.gch并创建了项目。没关系。
但是,即使没有任何改变,再次运行make也会重新创建Core.h.gch并重新编译所有内容。
如果我没有预编译的标头,make的行为会很好(如果没有任何更改,将不会重建任何东西,并且仅在进行修改后才重建必要的东西)
但是我真的很想拥有一个预编译的头文件,我有没有做错什么!
编辑:
建议以下内容:
# Pre-compiled header
$(CORE_PCH_FILENAME) =Core.h
CORE_PCH: $(CORE_PCH_FILENAME)
$(CXX) $(CXX_CFLAGS) -x c++-header $(CORE_PCH_FILENAME)
Run Code Online (Sandbox Code Playgroud)
但是它仍然每次都被创建:(