代码之家  ›  专栏  ›  技术社区  ›  Josh Olson

在单步生成目标时如何预编译头文件?

  •  3
  • Josh Olson  · 技术社区  · 8 年前

    我有一个简单的makefile,它查找与之相关的cpp文件,并从中构建目标。在构建目标时,我如何修改它以预编译与之相关的头文件?

    TARGET ?= application
    CXXFLAGS += -Os -I. -MMD -MP -std=c++11    
    
    SOURCES := $(shell find -L . -name '*.cpp')
    OBJECTS := $(SOURCES:.cpp=.o)
    DEPENDS := $(SOURCES:.cpp=.d)    
    
    $(TARGET): $(OBJECTS) 
        $(CXX) $(OBJECTS) -o $@ $(LDLIBS)    
    
    .PHONY: clean    
    
    clean : 
        $(RM) $(TARGET) $(OBJECTS) $(DEPENDS)    
    
    -include $(DEPENDS)
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Josh Olson    8 年前

    看来我不能做我想做的事。这里的解决方案是遵循@rup的建议,并将主要依赖项包含在一个编译的头文件中。

    GCC - 3.21 Using Precompiled Headers

    只有在以下条件适用时,才能使用预编译头文件:

    • 在特定编译中只能使用一个预编译头。