我的项目中有一个名为 Core.h 的头文件,我将其用作预编译头文件:
$(CXX) $(CXX_CFLAGS) -x c++-header Core.h
这会创建一个名为 Core.h.gch 的文件
*#include "Core.h"
是模块中每个源文件的第一个指令。
在 OS X 上,它工作得很好——我的项目编译得很好,而且编译得非常快。
然而,在 Linux 上,我的 100 多个文件中有 7 个给出以下警告:
警告:Core.h.gch:太短而不能成为 PCH 文件
就像所有其他源文件一样,#include "Core.h"
这些文件的第一行。
有没有人遇到过这个?可能的原因?为什么只有少数包含 PCH 的文件会发出警告?
我在 Linux 上使用 gcc 版本 4.1.2,在 OSX 上使用 4.2.1
谢谢!
编辑:
这基本上是我构建库的方式:
.PHONY: all
all: $(MY_PCH) MYLIB.so MYLIB.a
MYLIB.so: $(MY_PCH) $(MY_OBJECTS)
$(CXX) $(MY_OBJECTS) $(CXX_LDFLAGS) -o $@
MYLIB.a: $(MY_PCH) $(MY_OBJECTS)
$(AR) $(ARFLAGS) $@ $(MY_OBJECTS)
$(MY_PCH):
$(CXX) $(CXX_CFLAGS) -x c++-header Core.h