PROJECT OPTIONS

Opis opcji dostępnych w menu Project | Options.

 

  • Zakładka Compiler

  • Code optimization

  • Warnings

  • Debugging

  • Przyciski debugowania szybkości:

  • Full debug

  • Release

  • Pre-compiled headers

  • Compiling

  •  

    Code optimization

    Opcja umożliwiająca ustawienie globalnej optymalizacji kodu.

    Domyślnie = None - nie włącza żadnej optymalizacji kodu. Takie ustawienie jest najlepsze, gdy zaczynasz i rozwijasz swój projekt.

    Speed - ustawia optymalizację kodu pod kontem szybkości.

    Selected - umożliwia ustawienie wybranych opcji aktualizacji poprzez kliknięcie na przycisku Optimization:

    • Pentium scheduling - porządkuje instrukcje by zmniejszyć opóźnienia, które mogą być spowodowane przez Address Generation Interlocks (AGI), który występuje w procesorach i486 i Pentium. Pentium scheduling jest trudniejszy w debugowaniu, ponieważ instrukcje z konkretnej lini źródła mogą zostać wymieszane z instrukcjami z innych linii źródła.

    • Inline intrinsic functions - generuje wspólny kod dla funkcji pamięci takich jak strcpy(). Kod wykonuje się szybciej, ale jest większy, zwykle jednak nie widać różnicy w rozmiarze kodu. (-Oi - przełącznik linii komend).

    • Induction variables - wprowadza zmienne, które optymalizują kod zawierający pętle. (-Ov - przełącznik linii komend).

    • Optimize common subexpressions - optymalizuje kod pod kątem powtarzających się wspólnych wyrażeń, eliminuje powtarzające się wyrażenia w kodzie wynikowym. (-Oi - przełącznik lini komend).

    Chociaż taka optymalizacja powinna zmniejszyć rozmiar kodu, to w rzeczywistości optymalizuje tylko szybkość, rzadko redukując rozmiar kodu.

    Warnings

    Opcja ostrzeżeń kompilatora, umożliwia włączenie / wyłączenie komunikatów, które kompilator wyświetla gdy pojawia się ostrzeżenie.

    Domyślnie = All - włączone zostają wszystkie ostrzeżenia.

    None - wyłącza wszystkie ostrzeżenia.

    Selected - pozwala określić, które komunikaty o ostrzeżeniach będą wyświetlane.

    Debugging

    Opcje debufowania pozwalające na wygenerowanie różnych typów informacji podczas zestawiania kodu. Podczas łączenie większych plików *.OBJ możesz potrzebować wyłączyć te opcje by powiększyć dostępne zasoby systemowe. Pamiętaj żeby przejrzeć te opcje zanim końcowy projekt urośnie.  Odznaczenie tych opcji może nieznacznie zmniejszyć rozmiar pliku wynikowego.

    Debug information - dodaje debugowane informacje do skompilowanego pliku *.OBJ.

    Line number information - dodaje numer lini do pliku *.OBJ.

    Disable inline expansions - sprawia, że kompilator rozszerza C++ inline funkcji inline.

    Aby móc debugować informacje dodawane do końcowego pliku wykonywalnego, należy zaznaczyć na zakładce Linkier opcję Create debug information. Jeśli masz pojemny dysk zaznacz wszystkie te opcje.

    Full debug

    Pozwala na ustawienie zalecanego kompletu opcji podczas rozwijania aplikacji. Full debug ustawia następujące opcje:

    Code optimization = None

    Debugging - Debug information - enabled

    Debugging - Line number information - enabled

    Debbuging - Disable inline expansion - enabled

    Compiling - Stack frame - enabled

     

    Advanced compile:

    Register Values = None

     

    Pascal:

    Code generation - Optimization - disabled

    Code generation - Stack frames - enabled

    Debugging - Debug information - enabled

    Debugging - Local symbols - enabled

    Debugging - Symbol info - enabled

     

    Linkier:

    Linking - Include debug information - enabled


    Tasm:

    Debug Information - Full - enabled

     

    Directories/Conditionals:

    Dodaje makro _DEBUG do Conditional defines list. Możesz zmienić nazwę definicji poprze zmianę klucza rejestru HKEY_CURRENT_USER \ Software \ Borland \ C ++ Builder \ 6.0 \ Debugging. Klucz powinien zostać nazwany "DebugDefine" i powinien być wartością typu string wyszczególniającą zdefiniowaną  nazwę, której chcesz użyć.

    Release

    Ustawia kompilator i opcje linkiera (konsolidatora) w taki sposób, żeby zakończyć rozwój i rozpocząć debugowanie aplikacji. Release ustawia następujące opcje:

     

    Compiler:

    Code optimizations - Speed with scheduling - enabled

    Debugging - Debug information - disabled

    Debugging - Line number information - disabled

    Debugging - Disable inline expansions - disabled

    Compiling - Stack frames - disabled

     

    Advanced compiler:

    Register Variables - Automatic - enabled

     

    Pascal options:

    Code generation - Optimization - enabled

    Code generation - Stack frames - disabled

    Debugging - Debug information - disabled

    Debugging - Local symbols - disabled

    Debugging - Symbol info - disabled

     

    Linkier:

    Linking - Include debug information - disabled

     

    Tasm:

    Debug Information = None

     

    Directories/Conditionals:

    Usuwa makro _DEBUG do Conditional defines list.

    Pre-compiler headers:

    Ta sekcja zawiera ogólne pre-kompilowane opcje nagłówka. Pre-compiler może radykalnie zwiększyć szybkość kompilacji, jednak wymaga to sporej ilości miejsca na dysku. Przyspieszenie szybkości kompilacji odbywa się poprzez przechowywanie obrazu tabeli symbolów w pliku na dysku, dlatego możliwe jest przeładowanie takiego pliku z dysku zamiast ponownego parsowania wszystkich nagłówków plików. Bezpośrednie ładowanie tabeli symbolów z dysku jest dużo szybsze niż  parsowanie tekstu plików nagłówka, jeżeli kilka plików źródłowych zawiera ten sam plik nagłówka.

    Domyślny = Cach pre-compiled headers

    None - nie generuje pre-compiled nagłówka

    Use pre-compiler headers - sprawia, że kompilator generuje pre-kompilowane pliki nagłówka. Domyślna nazwa pliku vcl60.csm.

    Cache pre-compiled headers - sprawia, że kompilator umieszcza nagłówki w pamięci cache. Jest to przydatne kiedy pre-kompiluje się więcej niż jeden plik nagłówka

    File name - pozwala na wyszczególnienie użytego pliku nagłówka.

    Stop after - można tego użyć by zmniejszyć ilość użytego miejsca na dysku po pre-kompilacji. Nie polecam się bawienia tą opcją ponieważ można co najwyżej zmniejszyć rozmiar plików projektu, nie wpływa to jednak w żaden sposób na rozmiar aplikacji.

    Compiling:

    Te opcje kontrolują ogólne zachowanie się kompilatora C++ Builder. Jeżeli potrzebujesz ustawić bardziej dokładne opcje pracy kompilatora przejdź do zakładki Advanced Compiler.

    Domyślnie = wszystkie opcje są zaznaczone.

    Merge duplicate strings - powoduje połączenie podwójnych strings. Generowane są mniejsze programy przy nieznacznie dłuższym czasie kompilacji, ale może wywoływać błędy jeżeli modyfikujesz jeden string.

    Stack frames - sprawia, że kompilator generuje standardowy zapis funkcji i operacji wyjścia, jest to pomocne podczas debugowania. Kiedy ta opcja jest niezaznaczona, dowolna funkcja nie używająca loklnych zmiennych i nie pobiera żadnych argumentów jest kompilowana ze skróconym zapisem i kodem zwrotnym, to sprawia że kod jest mniejszy i szybszy. Z doświadczenia jednak mogę stwierdzić, że rozmiar pliku wynikowego się zwiększa zamiast zmniejszać. Opcja ta powinna być zaznaczona jeśli zamierzasz debugować program.

    Treat enum types as ints - kompilator alokuje całe słowo (a four-byte int dla 32-bit programów) dla typów enumeration (wymienianie) (zmienne typu enum). Dosłownie znaczy to potraktuj typy enum jako int. Kiedy ta opcja nie jest zazznaczona kompilator alokuje najmniejszą liczbę całkowitą, która zawiera wartość enum, kompilator alokuje unsigned albo signed char jeżeli wartości enum zawierają się w zakresie od 0 do 255 (minimum), albo -128 do 127 (maksimum), lub unsigned albo signed short jeśli wartości enum są poza zakresem 0 do 4,294,967, 295 albo  -2,147,483,647. Kompilator alokuje cztery-bajty int (32-bit), żeby reprezentować wartość enum, jeżeli jakaś wartość znajduje się poza zakresem.

    Show general messages - sprawia, że wyświetlane są ogólne błędy kompilatora i linkiera (konsolidatora), są to ostrzeżenia lub komunikaty błedu.

    Extended error information - dostarcza informacji pomocniczych dotyczących kompilatora, błędy zawierające informacje o kontekście parsera. Komunikaty błędu zawierające dodatkową informację zawierają znak plus (+) z lewej strony, kliknięcie na tym znaku wyświetla dodatkowe informacje.

     

    Podsumowanie zakładki Compiler. Dla początkujących i średnio - zaawansowanych podczas tworzenia i testowania projektu zalecam włączenie opcji Full debug, a przy tworzeniu końcowego pliku projektu do redystrybucji sugeruję użycie opcji Release.