c++ - 一步构建目标时如何预编译标头?
问题描述
我有一个简单的 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)
解决方案
看起来我无法做到我的想法。这里的解决方案是遵循@Rup 的建议,并将主要依赖项包含在单个编译的标头中。
只有当这些条件适用时,才能使用预编译的头文件:
- 在特定编译中只能使用一个预编译头文件。
推荐阅读
- sql - 将 CSV 文件插入到 SQL Server 中的现有表中
- delphi - 升级到 Delphi 10.2.3 后出现“服务器执行失败”和“不允许重复”消息
- python - python中的//和//=有什么区别?
- docker - 在另一个 Nginx 负载均衡器后面使用多个 Docker Nginx 负载均衡器,这被认为是一种不好的做法吗?
- google-sheets - 在电子表格公式中将连字符更改为数字
- java - java - 如何检查一个点没有NaN作为java中的参数
- ably-realtime - Ably Pub/Sub 实时 ILoggerSink LogEvent 不工作
- c - 添加两个多项式表达式时出错
- opencart - 无法在我的 Opencart 网站错误日志中打开图像的流错误
- google-drive-api - 谷歌驱动快速入门nodejs教程——quickstart如何命名应用程序?