Linux上预编译的标题警告(太短不能成为PCH文件)

时间:2011-09-09 04:02:47

标签: c++ linux g++ gnu precompiled-headers

我的项目中有一个名为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

1 个答案:

答案 0 :(得分:3)

您使用的是并行制作吗?可能g ++正在尝试读取.gch文件,而另一个实例正在写入它。