g cc создает файлы .h.gch, хотя в компиляторе нет файлов .h - PullRequest
0 голосов
/ 09 марта 2020

Мы создаем make-файл для проекта класса, и у нас возникают проблемы с созданием файлов .h.gch g cc. Осмотрел переполнение стека и, по-видимому, это обычно вызвано либо включением .h файлов в зависимости, либо наличием чего-то вроде #include *.cpp, чего мы не делали в нашем make-файле.

Мы получаем эту ошибку при компиляции, изменении файла и повторной компиляции. Пока что мы можем исправить это с помощью make clean перед повторной компиляцией, но, если возможно, мы бы хотели предотвратить создание файла .h.gch:

avr-gcc -I. -MMD  -g -mmcu=atmega324pa -Os -fpack-struct -fshort-enums -funsigned-bitfields -funsigned-char -Wall -fno-exceptions -c pwm.cpp pwm.h interruptNormal.h
cc1: warning: the "stabs" debug format cannot be used with pre-compiled headers [-Wdeprecated]
In file included from pwm.h:5:0:
interruptNormal.h:8:1: error: unknown type name 'class'
 class InterruptNormal{
 ^~~~~
interruptNormal.h:8:22: error: expected '=', ',', ';', 'asm' or '_attribute_' before '{' token
 class InterruptNormal{
                      ^
pwm.h:7:1: error: unknown type name 'class'
 class Pwm : public InterruptNormal{
 ^~~~~
pwm.h:7:11: error: expected '=', ',', ';', 'asm' or '_attribute_' before ':' token
 class Pwm : public InterruptNormal{
           ^
cc1: warning: the "stabs" debug format cannot be used with pre-compiled headers [-Wdeprecated]
interruptNormal.h:8:1: error: unknown type name 'class'
 class InterruptNormal{
 ^~~~~
interruptNormal.h:8:22: error: expected '=', ',', ';', 'asm' or '_attribute_' before '{' token
 class InterruptNormal{
                      ^
make: * [Makefile:146: pwm.o] Error 1

часть make-файла (не знаю, сколько Я мог бы написать, потому что мы хотели бы избежать проблем с плагиатом):

PRJSRC= $(wildcard *.cpp)
CPPFILES=$(filter %.cpp, $(PRJSRC))
OBJDEPS=$(CPPFILES:.cpp=.o)

%.o: %.cpp
    $(CC) $(CFLAGS) $(CXXFLAGS) -c $^

%.hex: %.out
    $(OBJCOPY) -j .text -j .data \
        -O $(HEXFORMAT) $< $@

Спасибо!

1 Ответ

0 голосов
/ 09 марта 2020

avr-gcc -I. ... -c pwm.cpp pwm.h interruptNormal.h

Вы компилируете .h файлы, это означает, что G CC генерирует предварительно скомпилированные заголовки для этих файлов, то есть .h.gch.

Предположительно, это не то, что вы хотите. Удалите файлы .h из компиляции и удалите файлы .gch из папки.

...