como alterar a ordem das inclusões do sistema no mingw no cygwin?

como alterar a ordem das inclusões do sistema no mingw no cygwin?

Estou tentando usar o mingw32 no cygwin32 para compilação cruzada. No entanto, recebo um erro envolvendo float.h

In file included from /usr/i686-w64-mingw32/sys-root/mingw/include/winnt.h:16:0,
                 from /usr/i686-w64-mingw32/sys-root/mingw/include/minwindef.h:146,
                 from /usr/i686-w64-mingw32/sys-root/mingw/include/windef.h:8,
                 from /usr/i686-w64-mingw32/sys-root/mingw/include/windows.h:69,
                 from globals.h:17,
                 from globals.c:10:
/usr/i686-w64-mingw32/sys-root/mingw/include/float.h:278:57: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
 _CRTIMP double __cdecl __MINGW_NOTHROW _chgsign (double _X);

Encontrei um artigo com um problema semelhante aqui:

https://www.cygwin.com/ml/cygwin/2003-07/msg00525.html

e eles sugeriram alterar a ordem das inclusões para que o mingw float.h seja encontrado antes do gcc float.h.

No entanto, se eu tentar incluir o cabeçalho manualmente da seguinte forma:

i686-w64-mingw32-gcc -DHAVE_CONFIG_H -I /cygdrive/d/Cygwin32/usr/i686-w64-mingw32/sys-root/mingw/include

usando a opção detalhada, recebo uma mensagem dizendo que minha inclusão foi ignorada porque "é um diretório que não é do sistema e que duplica um diretório do sistema".

Meu palpite é que chamar i686-w64-mingw32-gcc inclui automaticamente esse diretório se eu tiver instalado as bibliotecas mingw e a fonte do cygwin, o que fiz.

Na saída detalhada do compilador posso ver claramente o problema na ordem das inclusões.

/usr/lib/gcc/i686-w64-mingw32/4.8.3/include
 /usr/lib/gcc/i686-w64-mingw32/4.8.3/include-fixed
 /usr/i686-w64-mingw32/sys-root/mingw/include

Mas como faço para mover o mingw include na frente do gcc include?

Responder1

Descobri que você pode usar o sinalizador gcc -nostdinc e então apenas redefinir os pedidos de inclusão.

Não sei por que minhas pesquisas anteriores no Google não o encontraram.

informação relacionada