Предварительно скомпилированные заголовочные предупреждения в Linux (слишком короткие, чтобы быть файлом PCH) - PullRequest
2 голосов
/ 09 сентября 2011

В моем проекте есть заголовок, называемый Core.h, который я использую в качестве предварительно скомпилированного заголовка:

$(CXX) $(CXX_CFLAGS) -x c++-header Core.h

, который создает файл с именем Core.h.gch

*#include "Core.h" - это первая директива каждого исходного файла в модуле.

На OS X все работает нормально - мой проект компилируется нормально и довольно быстро.

Однако в Linux 7 из моих 100+ файлов выдают следующее предупреждение:

предупреждение: Core.h.gch: слишком короткий, чтобы быть файлом PCH

Как и любой другой исходный файл, #include "Core.h" - это первая строка этих файлов.

Кто-нибудь когда-нибудь сталкивался с этим? Возможные причины? Почему только несколько файлов, которые содержат PCH, могут выдать предупреждение?

Я использую gcc версии 4.1.2 в Linux, 4.2.1 в OSX

Спасибо!

EDIT:

Вот как я собираю библиотеку:

.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 Ответ

3 голосов
/ 09 сентября 2011

Используете ли вы параллельную марку? Возможно, g ++ пытается прочитать файл .gch, а другой экземпляр записывает в него.

...