首页 > 解决方案 > 一步构建目标时如何预编译标头?

问题描述

我有一个简单的 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)

标签: c++c++11gccmakefileprecompiled-headers

解决方案


看起来我无法做到我的想法。这里的解决方案是遵循@Rup 的建议,并将主要依赖项包含在单个编译的标头中。

GCC - 3.21 使用预编译头文件

只有当这些条件适用时,才能使用预编译的头文件:

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

推荐阅读