我有一个非常简单的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 $@ $<
我的问题是,我第一次制作时,创建了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)
但它仍然每次都会被创建:(