Więcej o firmie ELESOFTROM

Firma ELESOFTROM specjalizuje się w wykonywaniu i naprawianiu oprogramowania dla sterowników mikroprocesorowych.

Posiadamy ponad 10-letnie doświadczenie w tej dziedzinie.

W realizowanych projektach stawiamy na niezawodność i wydajność programów.

Naprawa oprogramowania

Oprogramowanie na zamówienie


Strona główna

Pełna oferta

Doświadczenie

O firmie

Kontakt


DioneOS - RTOS dla urządzeń embedded

Firma ELESOFTROM opracowała system RTOS dla procesorów ARM Cortex-M3 oraz msp430.

System jest zoptymalizowany pod względem wydajności, dzięki czemu uzyskano krótki czas przełączania pomiędzy wątkami.
System dostarcza elementy (np. semafory, mutexy, timery, kolejki itp.) niezbędne do tworzenia wielowątkowego firmware'u.

Wersja dla Cortexa została całkowicie przetestowana przy pomocy środowiska do automatycznego testowania.

Przeczytaj więcej:

Strona o systemie DioneOS

Niezawodność

Wydajność

Dokumentacja DioneOSa

Prezentacje n.t. DioneOS


^ Blog index    << Maszyny stanowe    >> Jak zbudować projekt C++ Buildera pod Eclipse (z użyciem GNU make)

Jak zbudować projekt C++ Buildera pod Eclipse (wersja uproszczona)

2014-11-05    dr inż. Piotr Romaniuk

Spis treści

Motywacja
Narzędzia Borlanda
Narzędzia dla Eclipse
Budowanie z linii poleceń
Utworzenie projektu w Eclipse i budowanie
Rozpoznawanie błędów i ostrzeżeń
Linki

Motywacja

Spotkałem się ostatnio z potrzebą wprowadzenia zmian w dość dużym programie, który został stworzony w Borland C++ Builderze. Program został napisany ponad 10 lat temu, ale cały czas się sprawdza i jest używany. Niestety samo IDE (Borland C++ Builder 6.0) "ma już swoje lata" i modyfikowanie w nim programu jest bardzo kłopotliwe.

Powstał pomysł aby do edycji i budowania użyć Eclipse - skorzystać w ten sposób z nowoczesnych metod wspomagania tworzenia programu (m.in. podpowiedzi argumentów, składowych klas, możliwość wyświetlenia hierarchi wywołań, włączania nagłówków itp.)

Narzędzia Borlanda

Borland C++ Builder jest zintegrowanym środowiskiem do tworzenia programów. Z jednej strony (od strony użytkownika) dostarcza graficzny interfejs, z drugiej - wykorzystuje konsolowe narzędzia (kompilator, linker, debuger itp). Narzędzia te można wykorzystać w innym IDE (Eclipse) zapewniając jedynie kompatybiność formy wywołania i zwracanej treści. Dzieki temu budowanie będzie nadal odbywać się za pomocą tego samego kompilatora. Nie będzie konieczne wprowadzanie zmian w plikach źródłowych, w szczególności bibliotekach Borlanda.

Borland C++ Builder instaluje sie domyślnie w C:\Program Files\Borland\CBuilder6, a niezbędne narzędzia można znaleźć w podkatalogu Bin. Są tam m.in.:
- bpr2mak.exe - konwerter projektu .bpr na makefile,
- make.exe - program make do nadzorowania procesu budowania (specyficzny dla Borlanda),
- cpp32.exe - preprocesor C,
- bcc32.exe - kompilator C++,
- tasm32.exe - asembler,
- ilink32.exe - linker,

Narzędzia dla Eclipse
Aby uzyskać większą swobodę i uniwersalność proponuę użyć MinGW oraz MSYS - dzięki temu będzie można "czuć się" jakby korzystało się z linuxowego shell'a i narzędzi GNU (np. make, awk itp).
Domyślnie instalują się w:
C:\MinGW\bin - kompilator GCC, bedzie potrzebny do wyznaczania zależności od nagłówków,
C:\MinGW\msys\1.0\bin - standardowe narzędzia (make, gawk, grep, gzip, tar itp).

Budowanie z linii poleceń
Po otwarciu konsoli MSYS (msys.bat w C:\MinGW\msys\1.0\) należy przejść do katalogu projektu i wykonać:

$cd /c/Projekty/hello1/
$export PATH=/c/Program\ Files\borland\Cbuilder6\bin:/c/mingw/msys/1.0/bin
$make -f hello1.mak

Powstaną pliki: hello1.exe, hello1.tds, hello1.obj, Unit1.obj
Można uruchomić plik exe i sprawdzić prawidłowe działanie:

$./hello1.exe

Utworzenie projektu w Eclipse i budowanie
W Eclipse należy utworzyć nowy projekt: Makefile Project with Existing Code, wskazać katalog projektu.
Następnie ustawić parametry budowania wg. poniższej ilustracji:





ustawić definicję symbolu __fastcall:



oraz ścieżki:



Trzeba jeszcze poprawić wygenerowany plik hello1.cpp dopisując typ zwracanej wartości (int) funkcji WinMain:

//---------------------------------------------------------------------------

#include 
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
int  WINAPI WinMain(HINSTANCE, HINSTANCE , LPSTR , int )
{
        try
        {
                 Application->Initialize();
...

Po wciśnieciu [Build Project] nastąpi budowanie a w oknie Console (CDT Build Console) pojawią się komunikaty budowania:

15:33:13 **** Incremental Build of configuration Default for project hello1 ****
"c:\Progra~1\borland\cbuilder6\bin\make" -f hello1.mak hello1.exe 
MAKE Version 5.2  Copyright (c) 1987, 2000 Borland
	c:\Progra~1\borland\CBUILD~1\bin\..\BIN\bcc32 -Od -H=c:\Progra~1\borland\CBUILD~1\bin\..
\lib\vcl60.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c   -tW -tWM -w-par -I"C:\Program File
s\Borland\CBuilder6\Projects";C:\_Projekty\builder2eclipse;c:\Progra~1\borland\CBUILD~1\bin\..\i
nclude;c:\Progra~1\borland\CBUILD~1\bin\..\include\vcl -D_DEBUG;_RTLDLL;NO_STRICT;USEPACKAGES -n
.\ .\hello1.cpp .\Unit1.cpp 
Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland
.\hello1.cpp:
Loaded pre-compiled headers.
.\Unit1.cpp:
Loaded cached pre-compiled headers.
	c:\Progra~1\borland\CBUILD~1\bin\..\BIN\ilink32 @MAKE0000.@@@
Turbo Incremental Link 5.60 Copyright (c) 1997-2002 Borland

15:33:14 Build Finished (took 910ms)

W wyniku tego utworzy się plik wykonywalny hello1.exe. Niestety nie ma jeszcze możliwości skasowania (clean) plików tymczasowych i wyniku budowania. Aby to uzyskać trzeba dopisać do pliku makefile'a projektu hello1.mak poniższe reguły:

...
.rc.res:
    $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $<

# ---------------------------------------------------------------------------
clean:
	rm -f $(PROJECT)
	rm -f $(OBJFILES)
	rm -f $(PROJECT:.exe=.tds)
	
all: $(PROJECT)

oraz włączyć wywoływanie all oraz clean w środowisku :



Rozpoznawanie błędów i ostrzeżeń przez Eclipse
Borland C++ Builder generuje ostrzeżenia w innym formacie niż tego oczekuje Eclipse:

Borland format
Error E2141 .\Unit1.cpp 21: Declaration syntax error in function _fastcall TForm1::Button1Click(TObject *)
GNU format (rozpoznawany przez Eclipse)
ListaKont.cpp:1066:1: warning: W8008 Condition is always true in function Wypelnianie() 

co można dopasować przetwarzając komunikaty z kompilatora za pomocą skryptu w AWKu (scripts/build_msg_transf.awk) i wstawiając jego wywołanie w potok operacji budowania. Całość dobrze jest opakować skryptem, który ustawi odpowiednie ścieżki. W efekcie budowanie sprowadza się do wywołania skrytpu built.bat:


Sprowokujmy błąd np. kasując średnik na końcu linii w Umain1.cpp, kompilacja prowadzi do wyniku, który jest rozpoznawany przez Eclipse co widać w oknie Problems (patrz poniżej), kliknięcie na błędzie prowadzi do pliku źródłowego wystąpienia błędu.



Dalsze modyfikacje procesu budowania w kolejnym opisie:
Jak zbudować projekt C++ Buildera pod Eclipse (użycie GNU make).

Linki

  1. Strona projektu MinGW - należy siągnąć instalator MinGW i MSYS
  2. Strona projektu Eclipse - należy ściągnąć Eclipse IDE for C/C++ Developers
  3. Pliki źrodlowe - projekt Borland C++ Buildera pod Eclipse
  4. Lista błędów Borland C++ Buildera