Настройка конфигурации компилятора Free Pascal 3.2.2
Степень завершённости урока: 30%
Статистика урока:
- Количество полного кода: 2
- Количество снимков: 0
- Время чтения: менее 15 минут
- Уровень сложности: сложный
Настройки конфигурации компилятора Free Pascal 3.2.2 хранятся в файле fpc.cfg.
Исходный код ниже в значительной степени состоит из комментариев. Если вас интересует компактный исходный код без комментариев, смотрите второй блок кода.
## Config file generated by fpcmkcfg on 15.11.2025 - 21:23:09# Example fpc.cfg for Free Pascal Compiler## ----------------------# Defines(preprocessor)# ----------------------## nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed## -d is the same as #DEFINE# -u is the same as #UNDEF### Some examples(for switches see below, and the -? helppages)## Try compiling with the -dRELEASE or -dDEBUG on the commandline## For a release compile with optimizes and strip debuginfo#IFDEF RELEASE -O2 -Xs #WRITE Compiling Release Version#ENDIF# For a debug version compile with debuginfo and all codegeneration checks on#IFDEF DEBUG -gl -Crtoi #WRITE Compiling Debug Version#ELSE # Strip debuginfo from the executable if not in debug mode -Xs#ENDIF# assembling#ifdef darwin# use pipes instead of temporary files for assembling-ap#endif# ----------------# Parsing switches# ----------------# Pascal language mode# -Mfpc free pascal dialect(default)# -Mobjfpc switch some Delphi 2 extensions on# -Mdelphi tries to be Delphi compatible# -Mtp tries to be TP/BP 7.0 compatible# -Mgpc tries to be gpc compatible# -Mmacpas tries to be compatible to the macintosh pascal dialects## Turn on Object Pascal extensions by default#-Mobjfpc# Assembler reader mode# -Rdefault use default assembler# -Ratt read AT&T style assembler# -Rintel read Intel style assembler## All assembler blocks are AT&T styled by default#-Ratt# Semantic checking# -S2 same as -Mobjfpc# -Sc supports operators like C(*=,+=,/= and -=)# -Sa include assertion code.# -Sd same as -Mdelphi# -Se<x> error options. <x> is a combination of the following:# <n> : compiler stops after <n> errors(default is 1)# w : compiler stops also after warnings# n : compiler stops also after notes# h : compiler stops also after hints# -Sg allow LABEL and GOTO# -Sh Use ansistrings# -Si support C++ styled INLINE# -Sk load fpcylix unit# -SI<x> set interface style to <x># -SIcom COM compatible interface (default)# -SIcorba CORBA compatible interface# -Sm support macros like C(global)# -So same as -Mtp# -Sp same as -Mgpc# -Ss constructor name must be init(destructor must be done)# -Sx enable exception keywords(default in Delphi/ObjFPC modes)## Allow goto, inline, C-operators, C-vars-Sgic# ---------------# Code generation# ---------------# Uncomment the next line if you always want static/dynamic units by default# (can be overruled with -CD, -CS at the commandline)#-CS#-CD# Set the default heapsize to 8Mb#-Ch8000000# Set default codegeneration checks(iocheck, overflow, range, stack)#-Ci#-Co#-Cr#-Ct# Optimizer switches# -Os generate smaller code# -Oa=N set alignment to N# -O1 level 1 optimizations(quick optimizations, debuggable)# -O2 level 2 optimizations(-O1 + optimizations which make debugging more difficult)# -O3 level 3 optimizations(-O2 + optimizations which also may make the program slower rather than faster)# -Oo<x> switch on optimalization x. See fpc -i for possible values# -OoNO<x> switch off optimalization x. See fpc -i for possible values# -Op<x> set target cpu for optimizing, see fpc -i for possible values#ifdef darwin#ifdef cpui386-Cppentiumm-Oppentiumm#endif#endif# -----------------------# Set Filenames and Paths# -----------------------# Both slashes and backslashes are allowed in paths# path to the messagefile, not necessary anymore but can be used to override# the default language#-FrC:\lazarus\fpc\$FPCVERSION/msg/errore.msg#-FrC:\lazarus\fpc\$FPCVERSION/msg/errorn.msg#-FrC:\lazarus\fpc\$FPCVERSION/msg/errores.msg#-FrC:\lazarus\fpc\$FPCVERSION/msg/errord.msg#-FrC:\lazarus\fpc\$FPCVERSION/msg/errorr.msg# search path for unicode binary files(FPC 2.x does not know this switch)#ifndef VER2-FM/unicode/#endif# Search for $fpctarget/$fpcsubarch-$fpcmemorymodel/ subdirectory first# for i8086 CPU#ifdef cpui8086-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/$fpcsubarch-$fpcmemorymodel-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/$fpcsubarch-$fpcmemorymodel/*-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/$fpcsubarch-$fpcmemorymodel/rtl#endif# searchpath for units and other system dependent things-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/*-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/rtl#IFDEF FPCAPACHE_1_3-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/httpd13/#ELSE#IFDEF FPCAPACHE_2_0-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/httpd20#ELSE-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/httpd22#ENDIF#ENDIF# searchpath for fppkg user-specific packages-Fu$LOCAL_APPDATA\FreePascal\fppkg/units/$FPCTARGET/*# searchpath for tools-FDC:\lazarus\fpc\$FPCVERSION/bin/$FPCTARGET# path to the gcclib# searchpath for libraries#-FlC:\lazarus\fpc\$FPCVERSION/lib#-Fl/lib;/usr/lib-FlC:\lazarus\fpc\$FPCVERSION/lib/$FPCTARGET#IFNDEF CPUI386#IFNDEF CPUAMD64#DEFINE NEEDCROSSBINUTILS#ENDIF#ENDIF#IFNDEF Win64#DEFINE NEEDCROSSBINUTILS#ENDIF# never need cross-prefix when targeting the JVM# (no native compiler, always cross-compiling)#ifdef cpujvm#undef NEEDCROSSBINUTILS#endif# for android cross-prefix is set by compiler#ifdef android#undef NEEDCROSSBINUTILS#endif# never need cross-prefix when targeting the i8086# (no native compiler, always cross-compiling)#ifdef cpui8086#undef NEEDCROSSBINUTILS#endif# never need cross-prefix when targeting the i8086# (no native compiler, always cross-compiling)#ifdef cpujvm#undef NEEDCROSSBINUTILS#endif# binutils prefix for cross compiling#IFDEF FPC_CROSSCOMPILING#IFDEF NEEDCROSSBINUTILS -XP$FPCTARGET-#ENDIF#ENDIF# -------------# Linking# -------------# generate always debugging information for GDB(slows down the compiling# process)# -gc generate checks for pointers# -gd use dbx# -gg use gsym# -gh use heap trace unit(for memory leak debugging)# -gl use line info unit to show more info for backtraces# -gv generates programs tracable with valgrind# -gw generate dwarf debugging info## Enable debuginfo and use the line info unit by default#-gl# always pass an option to the linker#-k-s# Always use smartlinking on i8086, because the system unit exceeds the 64kb# code limit#ifdef cpui8086-CX-XX#endif# -------------# Miscellaneous# -------------# Write always a nice FPC logo ;)-l# Verbosity# e : Show errors(default) d : Show debug info# w : Show warnings u : Show unit info# n : Show notes t : Show tried/used files# h : Show hints s : Show time stamps# i : Show general info q : Show message numbers# l : Show linenumbers c : Show conditionals# a : Show everything 0 : Show nothing(except errors)# b : Write file names messages r : Rhide/GCC compatibility mode# with full path x : Executable info(Win32 only)# v : write fpcdebug.txt with p : Write tree.log with parse tree# lots of debugging info## Display Info, Warnings and Notes-viwn# If you don't want so much verbosity use#-vw
А вот так выглядит тот же файл без комментариев:
#IFDEF RELEASE -O2 -Xs #WRITE Compiling Release Version#ENDIF#IFDEF DEBUG -gl -Crtoi #WRITE Compiling Debug Version#ELSE -Xs#ENDIF#ifdef darwin-ap#endif-Sgic#ifdef darwin#ifdef cpui386-Cppentiumm-Oppentiumm#endif#endif#ifndef VER2-FM/unicode/#endif#ifdef cpui8086-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/$fpcsubarch-$fpcmemorymodel-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/$fpcsubarch-$fpcmemorymodel/*-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/$fpcsubarch-$fpcmemorymodel/rtl#endif-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/*-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/rtl#IFDEF FPCAPACHE_1_3-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/httpd13/#ELSE#IFDEF FPCAPACHE_2_0-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/httpd20#ELSE-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/httpd22#ENDIF#ENDIF-Fu$LOCAL_APPDATA\FreePascal\fppkg/units/$FPCTARGET/*-FDC:\lazarus\fpc\$FPCVERSION/bin/$FPCTARGET-FlC:\lazarus\fpc\$FPCVERSION/lib/$FPCTARGET#IFNDEF CPUI386#IFNDEF CPUAMD64#DEFINE NEEDCROSSBINUTILS#ENDIF#ENDIF#IFNDEF Win64#DEFINE NEEDCROSSBINUTILS#ENDIF#ifdef cpujvm#undef NEEDCROSSBINUTILS#endif#ifdef android#undef NEEDCROSSBINUTILS#endif#ifdef cpui8086#undef NEEDCROSSBINUTILS#endif#ifdef cpujvm#undef NEEDCROSSBINUTILS#endif#IFDEF FPC_CROSSCOMPILING#IFDEF NEEDCROSSBINUTILS -XP$FPCTARGET-#ENDIF#ENDIF#ifdef cpui8086-CX-XX#endif-l-viwn
Предложить идею по улучшению урока в мессенджере Max или мессенджере Telegram
Страница обновлена 26 июля 2026 года.


