Witam!
Mam problem z prekompilowanymi nagłówkami w wxDev-C++. Wg Wiki wxWidgets:
dodałem nagłówek, który ma być prekompilowany do projektu oraz w jego opcjach zaznaczyłem “Create precompiled header”. W Main.cpp zaznaczyłem natomiast “Use precompiled header”, ale pomimo tego nagłówek wciąż nie jest prekompilowany - muszę wstawiać zwykłe nagłówki, bo inaczej wyświetli się błąd o braku deklaracji nazw w programie…
Czy wiecie jak rozwiązać ten problem :?:
EDIT:
Znalazłem już coś powodującego błąd.
Zawsze przed wstawieniem zwykłego nagłówka daje się dyrektywę preprocesora, która sprawdza czy zdefiniowana jest nazwa WX_PRECOMP. Wygląda to tak:
#include "wx/wxprec.h" //Prekompilowany nagłówek
#ifndef WX_PRECOMP
#include "wx/wx.h" //Zwykły nagłówek
#endif
Natomiast instrukcje powodujące albo zdefiniowanie albo niezdefiniowanie tej nazwy preprocesora są oczywiście w wxprec.h. I tam pierwszy człon rozległej dyrektywy warunkowej to:
#if defined( __VISUALC__ ) || \
defined( __DMC__ ) || \
defined( __VISAGECPP__ ) || \
defined( __MWERKS__ ) || \
defined( __WATCOMC__ ) || \
defined( __BORLANDC__ )
//... Dalsze szczegóły na razie nie potrzebne
#endif
A mój wxDev-C++ (czyli najnowszy pobrany oddzielnie MinGW) wykłada się właśnie już tutaj ! Sądząc po dwóch nazwach (Visual i Borland) wszystkie nazwy dotyczą kompilatorów czy tam środowisk. Wychodzi na to, że nie uwzględniono w nich nazwy preprocesora tworzonej przez kompilator g++ (używam MinGW). Nie wiem tylko dlaczego…
EDIT 2:
Wszystko już w porządku, mam prekompilowany nagłówek: podczas pierwszego buildu wyświetla się napis “Precompiling…” Trwa to 7 sekund (tyle co kompilacja normalnych nagłówków), ale za drugim razem jest to już sekunda
Rzeczywiście było tak jak mówiłem - dyrektywa warunkowa nie uwzględniała kompilatora MinGW - musiałem sam dodawać nazwę preprocesora __MINGW32__.
Ale - to nie to jest najdziwniejsze. Musiałem skopiować dodatkowo zawartość oryginalnego pliku wxprec.h (bo wcześniej po prostu go dodawałem do projektu z oryginalnej ścieżki) i utworzyć taki sam plik w moim projekcie - bo jak dodawałem oryginalny to nie działało…