https://wiki.freepascal.org/api.php?action=feedcontributions&user=Arabidopsis&feedformat=atomLazarus wiki - User contributions [en]2024-03-29T06:52:17ZUser contributionsMediaWiki 1.35.6https://wiki.freepascal.org/index.php?title=Feature_Ideas&diff=114231Feature Ideas2017-12-12T09:05:09Z<p>Arabidopsis: /* Visual */</p>
<hr />
<div><!--- {{Feature Ideas}} ---><br />
{{Warning|This page is intended to '''collect ideas''' for features that '''could''' be included in FPC/Lazarus. Putting an idea here does '''not mean''' it '''WILL''' be put into FPC/Lazarus. It's just a place to gather ideas. Think of this as more of a wishlist.}}<br />
<br />
If it is clear who is going to implement the feature, for example, because you have a patch or somebody on the mailing list volunteered to implement it, then it can be added to the [http://bugs.freepascal.org/ FPC/Lazarus Bugtracker], so it can be tracked and scheduled for a release.<br />
<br />
If you really want to see a feature implemented urgently, have a look at [[Bounties]] to pay for development.<br />
<br />
Tags: Wish, Wishes, Wishlist<br />
<br />
=IDE=<br />
Features that could be included in the IDE<br />
<br />
==An Integrated IDE==<br />
<br />
(Partly) done in 0.9.29: see [[Anchor Docking]]<br />
{{Warning|There are known bugs in the docking implementation. The Lazarus developers are aware of these and will be working on them if time permits. If you want to help speed this up by providing code, please get in touch on the Lazarus mailing list}}<br />
<br />
There are too many windows in the IDE. The more features you use the more they pile up on your desktop and become hidden behind other windows. This is confusing for the newbie and otherwise a mess.<br />
Docking windows as found in some IDEs might seem to give flexibility however in practice it is a two dimensional solution. You accidentally undock a window and have it hanging on your mouse while you try to put it back where it was.<br />
It would be better to use conventional splitters and tab controls to put it all together into a logical layout.<br />
* Associated windows should be converted to Frames and then placed on a single form or tab page on the main form<br />
* 1. There should be a Welcome Page having new project wizards, a list of recent projects, help and resources<br />
* 2. A Development tab containing sub tabs for code and for form design<br />
:* a. Code tab including Code Explorer, Source Editor and Project Manager<br />
:* b. Form design tab including Object Inspector, Form designer and Component Palette<br />
* 3 Debug tab containing the Debug windows as Frames.<br />
<br />
* 4 since an integrated IDE has less screen real estate, swapping in and out windows need to be easier.<br />
:* a. Probably a view concept is needed (different layout in debug then in normal (debug)). Maybe differentiate dependning on the F12 state (designer visible) too.<br />
:* b. Big missing feature is the ability to let tabs page in from the side (a tab system to the left and right from the screen, ideal for process manager). When such tab loses focus, it pops back.<br />
<br />
==Auto-generated database form==<br />
If you have set up a TSQLQuery, it would be nice to be able to let the IDE autogenerate a from with appropriate controls for all fields. --[[User:BigChimp|BigChimp]] 16:39, 8 August 2014 (CEST)<br />
<br />
==Easier Dragging & Dropping==<br />
===Ideas that have been implemented===<br />
Done in 0.9.29: Options / Form editor / Ask name on create<br />
<s>pool: after you add a component at Form, what is your next action? Editing Name/Caption in OI.<br />
Would be nice having OI focused and a key field like Name/Caption/Text selected. It would be very intuitive just having to type after dropping the component.</s><br />
<br />
==Common==<br />
* enable menu access through access keys like under windows (i hate mouse sessions :o)<br />
example: <alt>-<f> for file menu. '''Question: what operating system/widget set are you talking about?'''<br />
<br />
===Ideas that have been implemented===<br />
* (Done in 1.1) <s>Open files in the same folder as the current tab editor, like SCite does, it's a bit annoying to navigate from folder to folder every time you need open a file related to the one we are editing at the moment.</s><br />
<br />
==Source Editor==<br />
* Multiple splitting (and close the split) the editor to horizontal and vertical views like with VIM, so I can do split for example Vertically, and inside do a split for Horizontal editor. And we can close each split by right click on the movable splitter and select it from a menu item.<br />
<br />
* VIM keyboard support - require implementation of a command line like that can accept keyboards like with the VIM text editor. <br />
:A good example is Qt Creator: you press Alt+V+V and get into FakeVim mode, where most vim commands work<br />
:Question: what do you mean by keyboard? Another keyboard layout? Different shortcuts keys? Shortcut keys can already be defined via the Tools menu<br />
<br />
* Multi linguistic spell checkers for strings and comments, using aspell, hspell, ispell etc... (aspell and hspell already have binding for FPC)<br />
<br />
<br />
===Ideas that have been implemented===<br />
* (Done in 0.9.27) <s>When focusing/selecting one BEGIN the respective END should be in RED to show where it really ends.</s><br />
<br />
* (Done in 0.9.29) <s> Movable tabs, so we can place tabs as we wish instead of keeping them where they where opened. </s><br />
<br />
* (Done in 0.9.27) <s> Ability to have a way to fold code arbitrary by using comments with special chars such as </s><br />
some code {% /* } <-- start folding <br />
more code<br />
...<br />
...<br />
and more code {% */ } <-- stop folding <br />
<br />
* Done: if you click on an error message, the cursor jumps to the code line in question and highlights it.<s>Color code on errors with special underline or some type of color that the user can select/change that will help to locate where the problem is (not instead of the error message that exists today).</s><br />
<br />
* Done: see below <s>Ability to keep the string mark (that added to 0.9.27) of a word/selected string as permanent with a toggle of a menu item/key/toolbar or something</s><br />
: QUESTION: Does that refer to the "highlight all occurrences" of "word under caret"/"current selection"?<br />
: That is possible (try alt-M)<br />
<br />
* (Done: Lazarus 1.0+: context-sensitive help is included with at least the windows installer. See [[Installing Help in the IDE]] <s>Inline help for a command/reserve word that the mouse cursor/keyboard caret are under that word (not instead of the tooltip that exists today when the mouse is hover the command/variable).</s><br />
<br />
* (Done) <s>When pressing on CTRL on a file/variable/type etc.. that we are trying to load, it will place a tooltip telling what is going to be opened (the file + the line number)</s> (The information is shown when hovering over the variable)<br />
<br />
* Done in 0.9.29 <s>Ability to save and load color scheme for syntax highlight.</s><br />
<br />
* Done (present in at least 1.2): see Edit/Find in Files which has a replace option <s>Within the "Edit" menu, add an option called "Replace in files...", which allow find and replace text in all the units of the application, doing it at once.</s><br />
<br />
===Improvement of the menu and toolbars===<br />
* to allow end user customization<br />
* to obtain more styled menu (similar as Shagrouni xp-menu style)<br />
<br />
==Integrated and Working Debugger==<br />
Debugging from inside the IDE can be a frustrating process. I believe this is a combination of GDB being more C/C++ centric, or because it is a more generalized standalone debugger. Either way, I think the ultimate solution is to write a custom debugger for use with FPC and Lazarus IDE. This way it will be possible for the debugger to support ALL Object Pascal and Lazarus IDE requirements, or maybe even be compiled into the Lazarus IDE itself. GDB does support Object Pascal, but not nearly at the level it does with C/C++.<br />
<br />
An IDE without sufficient debugging support is a hard sell to would-be contributors or Delphi converts. This might also have contributed to some of the negative comments received in the Delphi non-technical newsgroup. Make no mistake, I love the many unique IDE features Lazarus has to offer - it beats Delphi IDE by far.<br />
<br />
Apart from the standard Lazarus debugging solution using gdb there are multiplle custom written debuggers, partly or completely implemented in Object Pascal:<br />
<br />
* [[FpGdbmiDebugger]]: uses gdb but also adds Pascal code. In development, experimental; included with Lazarus<br />
* '''fpdebug''': Located in the <laz>/debugger/fpdebug/ directory. Unfortunately at the time of this writing, that project is Windows only.<br />
* '''[http://sourceforge.net/projects/duby/ Duby]''': A research project on SourceForge.net.<br />
* '''[https://github.com/graemeg/fpdebug fpdebug (fork of duby)]''': It's a fork of Duby with some further development work. I didn't know about the name conflict with the Lazarus one though. The joys of the FP* prefix. :)<br />
<br />
Please try out these projects and contribute if you can.<br />
<br />
==Object Inspector==<br />
<br />
===Search field===<br />
add a "search" text box at the top or bottom (preferred, maybe user settable) of Object Inspector to be able to search for a name or value (maybe with right click menu checkable options on whether Name or Value or both are searched) in the properties/events list<br />
<br />
Question: What about sub properties? <br />
<br />
===Recent page===<br />
add a "Recent" tab to Object Inspector apart from the "Favorites" one, would be more useful than the Favorites one since it's automatic (would keep all properties/events that have been edited [fields that have either been changed or ENTER was pressed to CONFIRM/REset their current value - focus lost events shouldn't be considered editing if value of property/event field didn't change])<br />
<br />
Question: How are items removed from the list?<br />
<br />
<br />
===Not registered component classes===<br />
Add a field in the object inspector to allow specifying the real class that will be instantiated, with that will allow to uses derived classes without remake/link the IDE, of course the new fields for the real class will not be available to edit in designer.<br />
An example:<br />
We place a TEdit in a form, but we want to use a derived class we made that add a new field/property/method to TEdit and we will use that new field/property/method programming but in design time it's enough to work with TEdit, actually there is an option to change the class but only to another one that's already linked on the IDE.<br />
<br />
{{Note| The class must be registered. This is needed for streaming and RTTI. If you don't want to register the real class, then register a fake class. It would be possible to create an artificial derived class from a registered component class on the fly. This has nothing to do with the OI. A dialog to manage all artificial classes must be implemented and a menu item must be added somewhere.}}<br />
<br />
==Refactoring==<br />
===Global Variable/Method renaming===<br />
<s>Proper renaming (as in if I rename a field in an object it can change everything that uses it but NOT other stuff that happens to have the same name) -Plugwash</s><br />
: Already implemented: See Source Editor -> popup menu -> refactoring -> rename identifier<br />
<br />
===Parameter Renaming in Methods===<br />
adding a parameter to a method (and updating everything that uses it) -Plugwash<br />
: How should that work? What should the IDE/codetools put as parameter at the places?<br />
:: You specify that when you ask for the parameter to be added. [[User:Plugwash|Plugwash]] 05:09, 30 September 2006 (CEST)<br />
: For example, you add a parameter "b: boolean". The method is used a 100 times.<br />
* Possibility 1: You add a default parameter too. No change to the using methods is needed.<br />
* Possibility 2: You press compile and the compiler will jump to every occurence and you can decide, what to do.<br />
* Possibility 3: A new dialog is added to the IDE, where you can specify to insert a ",false" at every occurence.<br />
* Possibility 4: ?<br />
Do you have 3 in mind or 4?<br />
<br />
===Parameter reordering===<br />
like Delphi. A dialog to add, remove, reorder parameters of a function, method, property.<br />
<br />
===Improvement of the IDE like GExperts does for Delphi===<br />
* Done: see Project/Publish project <s>Backup tool...</s><br />
* Tab : provision to set Tab spacing<br />
:Question: please indicate what you specifically miss in Tools/Editor/General/Tab and Indent<br />
* Rename Components (where it is possible too, to fill some properties in this moment. f.e. Button: Caption, Width, Height, Action)<br />
<br />
== I have a dream of components : Jedi ==<br />
Sure I switch immediately from Delphi to Lazarus.<br />
* The Jedi components are a mix of OS dependant, Borland dependant and architecture specific code. I doubt these will ever work on anything but windows/x86. (and maybe win64 with a bit shoehorning). Example: To use a string routine in the strings unit of JCL, you have to fix like 12 units, some of which poke around in the Borland specific debug code. And then you haven't even reached the units of the JVCL, besides this there is a [[licensing]] problem. [[User:Marcov|Marcov]] 18:27, 4 October 2008 (CEST)<br />
* A lot of Jedi code has been implemented in FPC already. Question: do you need more? What components exactly? --[[User:BigChimp|BigChimp]] 15:16, 28 March 2014 (CET)<br />
<br />
==Code completion==<br />
===Create/Free objects===<br />
Declare an object myObj:TMyClass into a TForm class an type some Ctrl-Shift-Key, then the IDE adds a line myObj:=TMyClass.Create in FormCreate and myObj.Free in FormDestroy. -Rednaxel<br />
<br />
===Add list properties===<br />
Declaring an indexed property like 'property Items[i: integer]: TAType' and using this feature (Ctrl-Shift-Key, Menu), should popup a dialog to setup some parameters and then it should add a private variable fItems: TFPList; (or 'array of' or TList or ^AType), create code in the constructor, destroy code in the destructor and access methods GetItems, SetItems.<br />
<br />
==Visual Form Inheritance==<br />
VFI (Visual From Inheritance) works in Lazarus but there are some missing features:<br />
*When ancestor and descendant are open in the IDE and a property of the ancestor is changed, then change the descendant too.<br />
<br />
==Conditional Compiler Options==<br />
<br />
See [[Conditional Compiler Options]].<br />
<br />
==Help==<br />
===A small tutorial for Object Oriented Programming===<br />
I wish to have in Lazarus as in Eclipse in the Help menu a Tutorial for Object Oriented Programming.<br />
* This is a good idea, but I think a '''offline''' help browser is first required. Lucky for you, I already implemented such a beast, called [http://sourceforge.net/projects/fpgui/files/fpGUI/1.4/ DocView]. :-) I also have a few old programming manuals around that could contribute to the contents. I know Borland released the OOP chapter what was included in the Turbo Pascal v5.5 & v6 manuals for everybody to use (freely downloadable). So maybe that will be the best place to start. A downloadable copy of the OOP Chapter can be found [http://geldenhuys.co.uk/articles/ here]. I also have freely available INF e-books (viewable with DocView) that cover the introduction to Object Pascal and OOP programming (follow [http://geldenhuys.co.uk/~graemeg/inf_books/ this] link) --[[User:Ggeldenhuys|Ggeldenhuys]] 13:44, 29 November 2013 (GMT)<br />
* Offline help has been included since Lazarus 1.0x with lhelp and the chm format. A help menu item that shows lhelp is included with Laz trunk. Maybe the .inf books could be converted to chm and included with the Lazarus installer --[[User:BigChimp|BigChimp]] 14:21, 30 November 2013 (CET)<br />
<br />
==Better Macro support by making them easier to find==<br />
See the feature request [http://bugs.freepascal.org/view.php?id=14558 #14558] in Mantis. In summary, add a button next to EditBox controls which support macro usage. Clicking the button will display a popup menu with available macros at that level and insert the selected macro into the EditBox at the cursor position.<br />
<br />
==Copy and Paste Support for a lazy programmer (in properties-editor) ==<br />
<s>Maybe it's by design (because of the same behaviour under win and mac)... but I think, it's a little bit of annoying. When I try to copy the chosen "name" of a component out of proterties-editor by selecting it and ctrl+c, I will not get the text of the name, but the object/component description itself (which is useless, I guess). There is not even a "copy" item in the context-menu. I use very long descriptive names for components (and variables) and it would be nice, to get these unhandy names somehow into the clipboard. [[User:KaLi|KaLi]] 14:56, 30 June 2010 (CEST)</s><br />
: This seems to work in 0.9.31, both Ctrl+C and via context-menu [http://wiki.lazarus.freepascal.org/User:Bart Bart]<br />
<br />
==Code Library Window or Tab ==<br />
<s>It would be great to have a built in location to store all those useful pieces of code. Ones that you have created, or found useful.<br />
<br />
My ideal feature list would be:<br />
* Save and Load my personal code<br />
* Attach Zip file ( useful for keeping a sample project, showing the code in use).<br />
* Ability to Upload Code / zip to central online repository.<br />
* Ability to synchronize or select repository code and download to my own code store.<br />
* Code could be sectioned into well thought out categories, like Types of controls, Libraries, complete project examples, Tutorials, etc.<br />
* A place to show the most recent code submitted by Category.<br />
<br />
It would also be a good place to help people who need some assistance. I would have the following options:<br />
* Option to Ask for help on a control or subject matter.<br />
* Notification when a solution is uploaded to the repository.<br />
* Maybe a points system rating the assistance given out of 10 ( 1 being not useful, 10 being just what I needed)</s><br />
<br />
:The "Code Librarian" third party code library tool is available made by Lazarus forum user taazz. Helping him with incorporating these features (if he wants to) could be the best way of getting this functionality: http://forum.lazarus.freepascal.org/index.php/topic,22752.0.html and https://sourceforge.net/projects/codelibrarian/<br />
<br />
== Write and run unit tests from subpackage of project being tested ==<br />
The main idea is to have ability to write and run Unit tests from a subpackage of main project. '''Please see [[Feature Ideas/UnitTests]]'''<br />
<br />
=LCL=<br />
<br />
==Components==<br />
<br />
Components that are possible to make that will work across all platforms supported by Lazarus<br />
* Do you mean customdrawn components? If so, that is already possible. I think the TStringGrid is a customdrawn component. Alternatively, look at [[fpGUI]] for a completely customdrawn GUI toolkit. --[[User:Ggeldenhuys|Ggeldenhuys]] 23:56, 30 September 2009 (CEST)<br />
<br />
===Visual===<br />
* The existing '''TDBLookupComboBox''', could be greatly enhanced by something like an "'''.IsFiltered''' property": If true, the control should reduce its list of visible (and hence selectable) values in the dropdown list by filtering the DataField by the current DBLookupComboBox while editing. This means, onChange (resulting in DBLookupComboBox.Text updated to someString) automatically reduces the list to '''SELECT lookup_field FROM lookup_table WHERE lookup_field LIKE %'+someString+'%'''. A feature like that would greatly enhance the usability of Lazarus made database applications! <br>To illustrate this idea, compare other similar projects: [https://www.freelancer.com/projects/Delphi/Custom-Delphi-TDBLookupComboBox/ 1] [https://www.devexpress.com/Support/Center/Question/Details/B196085/filtering-dataset-of-tcxdblookupcombobox 2] or [https://www.drupal.org/sandbox/jauzah/1748434 3], or this [https://www.drupal.org/files/project-images/select2element_screen.jpg screenshot] .<br />
<br />
*Already implemented [[Add Help to Your Application]]: <s>Help system for apps created by Laz! It is a plugin system. That's why it supports cross-platform help system and using the OS's native help system.</s><br />
<br />
*The current LCL TStringGrid is a nice improvement over Delphi's feeble control with the same name. Would be great if it could be improved even more!<br />
**<s>Support for data validation event handler, similar to Orpheus grid's OnUserValidation event.</s> ''There are many events, for example OnEditingDone, and OnValidateEntry to do this. See [[Grids Reference Page]] and [[Event order]]''<br />
**Support for retrieving, displaying, editing and storing data that are stored in an existing memory structure or in a file rather than in grid itself, similar to the Orpheus grid's OnGetCellData and OnGetCellAttributes events. ''There is the TTIGrid, that can show TCollection, TList and TFPList of TPersistent. What else do you need? Additionally, you can bind a TBufDataset to a dbgrid...''<br />
**A TImage component wich support transparent winxp alpha 32 bit icon images<br />
**<s>Support for RightToLeft BidiMode.</s> Fixed in 0.9.31 according to http://bugs.freepascal.org/view.php?id=18918. Bug report tracking all RTL/Bidi: http://bugs.freepascal.org/view.php?id=19303 If there are still bugs, please report them to the bug tracker.<br />
*TTrayIcon<br />
** Add a TImageList property in TTrayIcon to change TrayIcon icon or animate it<br />
<br />
===NonVisual===<br />
*Clipboard and <s>TTimer</s> that don't depend on LCL. If you use these in a library or console app, the compiler drags in a lot of unused and unneeded LCL code. If you have multiple DLL's, this code is duplicated in each. Current implementations appear to follow the Delphi design approach, where Clipboard and TTimer have dependencies on the VCL - this probably wasn't necessary.<br />
** TfpTimer is a non-LCL timer already available in FPC in unit '''fptimer.pp'''. Online help is available [http://lazarus-ccr.sourceforge.net/docs/fcl/fptimer/index.html here]. --[[User:Ggeldenhuys|Ggeldenhuys]] 14:38, 2 September 2009 (CEST)<br />
** This may be true on Windows, but it´s False for Linux. I recently implemented TTimer for qt interface and the implementation calls Qt API. I think the same applies to Clipboard, since the clipboard depends on the widgetset used too (gtk or qt for example), not only on the operating system. --[[User:Sekelsenmat|Sekelsenmat]] 20:40, 5 Mar 2006 (CET)<br />
** The LCL is a visual component library. None visual components are provided by the FCL.<br />
** Lazarus will only provide components based on the LCL.<br />
<br />
==PDA Support==<br />
<br />
Something that currently does not exist is a complete multiplatform solution for PDAs. If we can implement this, Lazarus will become the first multiplatform RAD for PDAs ever created. Some devices work with Java, some work with c++ and Qtopia, some work with their particular APIs, there is no single solution currently that can embrace a large portion of PDAs. Application have to be redone for every PDA or simply just run on one of them (what most people do).<br />
<br />
The LCL implements many things. It is not necessary to implement them all to have a reasonably working Lazarus PDA widgetset. The most important things to be implementeded for PDAs are:<br />
<br />
* TApplication<br />
* TForm<br />
* TScreen<br />
* TCanvas and painting<br />
* Most Events (onClick and OnPaint at least)<br />
* Basic widgets like: TButton, TLabel, TEdit, TMemo.<br />
* Only minimum necessary LCLIntf functions to make TCanvas work. (GetDC, ReleaseDC, BeginPaint, EndPaint and some painting functions)<br />
<br />
Others can be easily implemented by people who need them after those are ready.<br />
<br />
Here is a list of some PDAs and the status of their support on Free Pascal / Lazarus:<br />
<br />
* Windows CE - The compiler already works really well cross compiling for Windows CE. The [[Windows CE Interface]] is under implementation.<br />
* Symbian OS - Possible for their ARM devices. Requires first adding a new Runtime Library for this OS to the Compiler. This OS has it's own API. There are open source projects for python and c to work on Symbian OS, so Free Pascal should work as well when a RTL is written.<br />
* Qtopia - For Zaurus and other linux-based PDAs. This is much easier now that basic Qt4 widgetset has being implemented, because Qtopia is very similar to Qt4. Some magick on the bindings is expected to make the same widgetset code to run for both Qtopia and Qt4.<br />
* Java - Some handheld devices, specially phones, only support java bytecode. May seam a little odd, but there is a Pascal Compiler capable of compiling the source into a jar and then into bytecode. It's name is Midlet Pascal http://www.midletpascal.com/ It may be possible to develop a similar technology that adds a java bytecode target for Free Pascal. Some people already start porting midletpascal to delphi http://forum.boolean.name/attachment.php?attachmentid=7975&d=1255392966, follow instructions on http://www.pascalgamedevelopment.com/forum/index.php?topic=5466.0 to access it.<br />
* Palm OS - PalmOS 5 Garnet support requires that first the 68k compiler is working (runs on ARM processor with a kind of emulation) and then a RTL for palmos needs to be written. Only Free Pascal 1.0 supports 68k, this wasn't updated and the new compiler 2.0 doesn't support it yet (work in progress by [[fpc:User:Chain-Q]]), so will be a problem.<br />
<br />
PalmOS 6 Cobalt is fully arm, so it only requires a rtl, but it has zero devices working on it currently and won't be on the market until 2007 at least.<br />
<br />
Other compilers that support this target: [http://www.ppcompiler.org Pascal & Palm Compiler] and [http://hspascal.fihl.net/ HsPascal]. Unfortunately those compilers are not open source, so we can't use their code, we need to implement PalmOS RTL from zero.<br />
<br />
==More Interfaces==<br />
* Cocoa - <s>Requires that first OpenSTEP bindings are created for Free Pascal.</s> Cocoa interface support has been started; see [[Cocoa Interface]]<br />
* BeAPI - interface for Haiku, ZetaOS and BeOS. There is no powerful RAD on this OS.<br />
** Bindings to the BeAPI has been started - though not part of the Lazarus project. Have a look at SourceForge [http://befpc.sourceforge.net/ befpc] project.<br />
* [http://www.libsdl.org SDL] - something like what was done in [http://www.kanzelsberger.com/pixel/ Pixel Image Editor].<br />
* MacApp 2.0 - For 68k-based Mac computers. MacApp was Apple Computer's primary object oriented application framework for the Mac OS for much of the 1990s. First released in 1985, it is arguably the first such system to be widely used, notably on a microcomputer platform. Microsoft's MFC and Borland's OWL were both based directly on MacApp concepts. This framework was completely written on Object Pascal, so it should integrate really nicely with Free Pascal and Lazarus. When Apple moved to PowerPC it also dropped Object Pascal support, but that's another story. A emulator for 68k-Mac can be easely set up with [http://basilisk.cebix.net/ BasiliskII]. There is also a project called MacApp2PPC that upgraded MacApp pascal code to run on Power PCs. <br />
* OS/2 native - Free Pascal works well with OS/2, so this should be quite possible.<br />
* <s>Solaris - OpenSolaris versions exist and it's quite similar to Linux so why not ?</s> For information on the Solaris port of Lazarus, see: [[Lazarus on Solaris]]<br />
* Web Interface - Application compiles to an embedded HTTP Server who serves forms in ajax pages (or compiles it to an Apache Module), like Intraweb in Delphi. Discussion in http://www.lazarus.freepascal.org/index.php?name=PNphpBB2&file=viewtopic&t=2489<br />
* Already implemented: <s>[http://fpgui.sourceforge.net/ fpGUI] - A widget set written in Free Pascal without any large library requirements. fpGUI talks directly to the underlying graphics library and is very easy to port to new platforms. Currently it supports Linux, ARM-Linux, FreeBSD, Windows and WinCE.</s> - Under development here: [[fpGUI Interface]]<br />
<br />
=== improved EventQueue ===<br />
* [[Lazarus improved Event Queue]]<br />
<br />
=== Lua ===<br />
* Support for Lua interfacing. (Binary modules?) <br />
** What is Lua interfacing? Is it a graphical widgetset? What is the difference between what you want and is supplied by the lua units of fpc: http://svn.freepascal.org/svn/fpc/trunk/packages/lua/<br />
** Perhaps the poster wanted to use the Lua scripting language to access the LCL widgetset. Had a quick look at the FPC lua package mentioned above: no readme, no test, no demo, so not easy to see what that package does/can do. Perhaps it can be used as-is to do what the poster wants; in that case, some additional samples/documentation may be handy. BigChimp, September 2012<br />
<br />
=Visual Improvements=<br />
<br />
==An idea for a splash screen==<br />
[[Image: splash_logo2_.png]]<br />
<br />
The font for "write once..." is DejaVue Serif Condensed, for "Lazarus" is Phantom, and for "object pascal" is Tahoma.<br />
<br />
If you want to change the splash logo on Windows, in your main Lazarus installation folder find "images" folder and there find "splash_logo.bat". Then edit and run it or replace "splash_logo.png" and run "splash_logo.bat".<br />
=== critique ===<br />
* as if people's desktops are not already cluttered to the max... not desirable<br />
<br />
=FPC=<br />
==Per-type Byte Alignment==<br />
A means to align variables and records in a unit is already possible with compiler directives, but is somewhat messy and might cause conflicts in some situations. What I propose is an addition to the Free Pascal syntax that forces all variables of a defined type to be aligned to a particular boundary. e.g.<br />
<br />
<syntaxhighlight><br />
type<br />
AlignedDouble = Double align 16;<br />
<br />
type<br />
TVector4f = packed record<br />
X, Y, Z, W: Single;<br />
end align 16;<br />
<br />
type<br />
TVector4fArray = array of TVector4f align 32;<br />
{ tighter restrictions than TVector4f, so it's okay. Note that this should probably align Var[0] to a 32-byte boundary, not necessarily Var as a whole }<br />
</syntaxhighlight><br />
Such aligned types are useful and even necessary for when working with SSE and AVX, where significant speed gains can be achieved with aligned data (and some operations require it).<br />
<br />
Apparently Delphi supports something like this already, but it isn't well-documented.<br />
===Nuances===<br />
* The exact syntax.<br />
* Cross-platform support. Do all platforms support memory alignment?<br />
* Exact error messages or behaviour if you specify a non-power of 2 alignment.<br />
* What happens if you try to typecast an unaligned variable to an aligned type? (Aligned to unaligned should be fine)<br />
* What happens if you try to typecast a pointer to an unaligned type to a pointer to an aligned type?<br />
* What happens if you, say, declare a type aligned to 16 bytes, and then declare another type that is equal to it but is only aligned to 8 bytes?<br />
* What happens if you, say, declare a type aligned to 16 bytes, then use it as a field in a record type, aligned or otherwise?<br />
[[User:CuriousKit|CuriousKit]] ([[User talk:CuriousKit|talk]]) 18:28, 5 December 2017 (CET)<br />
<br />
=="vectorcall;" modifier for Win32 and Win64==<br />
This function modifier is the only unique modifier for Win64 (although it can be used in Win32 too), introduced by Microsoft at the behest of game developers who wish to reduce the overhead of passing vectors and the like into subroutines. The basic details are the same as the regular Win64 calling convention, but attempt to vectorise certain record types and pass them in their entirety through a single XMM register (something which is already possible in Linux64 sometimes). Details can be found here: https://msdn.microsoft.com/en-us/library/dn375768.aspx<br />
<br />
This may require the byte alignment feature described above.<br />
===Nuances===<br />
* What happens if it is used on a platform other than Win32 or Win64? Does a compiler error occur or is it ignored with a warning?<br />
[[User:CuriousKit|CuriousKit]] ([[User talk:CuriousKit|talk]]) 23:04, 5 December 2017 (CET)<br />
<br />
* As an example of prior art I think Vector Pascal[https://sourceforge.net/projects/vectorpascalcom/] is noteworthy. [[User:MarkMLl|MarkMLl]] ([[User talk:MarkMLl|talk]]) 09:12, 6 December 2017 (CET)<br />
=="default"-value in a proc or function call ==<br />
* There is a limitation in the freepascal-Syntax where you can not depend on the default-parameter lefthand from an explicit parameter. I suggest a possibility where you can say "default" in a function-call, and set other parameters at the same time.<br />
<br />
<br />
<syntaxhighlight><br />
program DefaultParameter;<br />
<br />
{$mode objfpc}{$H+}<br />
<br />
type<br />
Pilots = (Charles, Amelia, Belly, Louis);<br />
<br />
procedure Fly(Pilot: Pilots = Belly; Copilot: Pilots = Charles);<br />
begin<br />
if (Pilot=Copilot) then<br />
halt(1);<br />
end;<br />
<br />
begin<br />
Fly; // we fly with Belly+Charles<br />
Fly(); // we fly with Belly+Charles<br />
Fly(Amelia); // we fly with Amelia+Charles<br />
Fly(Louis, Belly); <br />
<br />
// The following "default" is my Feature Idea<br />
// │<br />
// v<br />
Fly(default, Amelia); // we fly with Belly+Amelia<br />
end. <br />
</syntaxhighlight><br />
===Critique===<br />
*If such a feature should exist, wouldn't it be more straightforward to simply not specify anything before the comma? (i.e. "Fly(, Amelia);") [[User:CuriousKit|CuriousKit]] ([[User talk:CuriousKit|talk]]) 14:50, 7 December 2017 (CET)<br />
<br />
=Other=<br />
==Fixes branch releases==<br />
Already done: <s>Currently we only have snapshots of the fixes branch, and it would be nice to also have them as releases. To have releases, those builds would have to be tested by someone, so I volunteer for that. What is needed is a testing checklist, and the start of it can be found on my page, [[User:Arny]]. Any further ideas are welcome!</s><br />
<br />
* This is already done and maintained for v0.9.28 onwards of Lazarus. Downloads of ''fixes'' releases are available on SourceForge or at [[git_mirrors|GitHub]]. --[[User:Ggeldenhuys|Ggeldenhuys]] 16:03, 16 November 2009 (CET)<br />
<br />
==See Also==<br />
* [[Bounties]] - A way to make sure your feature idea is implemented.<br />
* [[How do I create a bug report]] general information on submitting bugs, what should be covered in a bug report, and using the bug tracker. <br />
* [[Tips on writing bug reports]] detailed information on what should be covered in a bug report. <br />
* [[Database bug reporting]] Specific info and sample programs for database bugs <br />
* [[Moderating the bug tracker]] <br />
<br />
<br />
[[Category:Lazarus]]<br />
[[Category:Proposals]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Feature_Ideas&diff=114223Feature Ideas2017-12-11T12:41:55Z<p>Arabidopsis: /* Visual */</p>
<hr />
<div><!--- {{Feature Ideas}} ---><br />
{{Warning|This page is intended to '''collect ideas''' for features that '''could''' be included in FPC/Lazarus. Putting an idea here does '''not mean''' it '''WILL''' be put into FPC/Lazarus. It's just a place to gather ideas. Think of this as more of a wishlist.}}<br />
<br />
If it is clear who is going to implement the feature, for example, because you have a patch or somebody on the mailing list volunteered to implement it, then it can be added to the [http://bugs.freepascal.org/ FPC/Lazarus Bugtracker], so it can be tracked and scheduled for a release.<br />
<br />
If you really want to see a feature implemented urgently, have a look at [[Bounties]] to pay for development.<br />
<br />
Tags: Wish, Wishes, Wishlist<br />
<br />
=IDE=<br />
Features that could be included in the IDE<br />
<br />
==An Integrated IDE==<br />
<br />
(Partly) done in 0.9.29: see [[Anchor Docking]]<br />
{{Warning|There are known bugs in the docking implementation. The Lazarus developers are aware of these and will be working on them if time permits. If you want to help speed this up by providing code, please get in touch on the Lazarus mailing list}}<br />
<br />
There are too many windows in the IDE. The more features you use the more they pile up on your desktop and become hidden behind other windows. This is confusing for the newbie and otherwise a mess.<br />
Docking windows as found in some IDEs might seem to give flexibility however in practice it is a two dimensional solution. You accidentally undock a window and have it hanging on your mouse while you try to put it back where it was.<br />
It would be better to use conventional splitters and tab controls to put it all together into a logical layout.<br />
* Associated windows should be converted to Frames and then placed on a single form or tab page on the main form<br />
* 1. There should be a Welcome Page having new project wizards, a list of recent projects, help and resources<br />
* 2. A Development tab containing sub tabs for code and for form design<br />
:* a. Code tab including Code Explorer, Source Editor and Project Manager<br />
:* b. Form design tab including Object Inspector, Form designer and Component Palette<br />
* 3 Debug tab containing the Debug windows as Frames.<br />
<br />
* 4 since an integrated IDE has less screen real estate, swapping in and out windows need to be easier.<br />
:* a. Probably a view concept is needed (different layout in debug then in normal (debug)). Maybe differentiate dependning on the F12 state (designer visible) too.<br />
:* b. Big missing feature is the ability to let tabs page in from the side (a tab system to the left and right from the screen, ideal for process manager). When such tab loses focus, it pops back.<br />
<br />
==Auto-generated database form==<br />
If you have set up a TSQLQuery, it would be nice to be able to let the IDE autogenerate a from with appropriate controls for all fields. --[[User:BigChimp|BigChimp]] 16:39, 8 August 2014 (CEST)<br />
<br />
==Easier Dragging & Dropping==<br />
===Ideas that have been implemented===<br />
Done in 0.9.29: Options / Form editor / Ask name on create<br />
<s>pool: after you add a component at Form, what is your next action? Editing Name/Caption in OI.<br />
Would be nice having OI focused and a key field like Name/Caption/Text selected. It would be very intuitive just having to type after dropping the component.</s><br />
<br />
==Common==<br />
* enable menu access through access keys like under windows (i hate mouse sessions :o)<br />
example: <alt>-<f> for file menu. '''Question: what operating system/widget set are you talking about?'''<br />
<br />
===Ideas that have been implemented===<br />
* (Done in 1.1) <s>Open files in the same folder as the current tab editor, like SCite does, it's a bit annoying to navigate from folder to folder every time you need open a file related to the one we are editing at the moment.</s><br />
<br />
==Source Editor==<br />
* Multiple splitting (and close the split) the editor to horizontal and vertical views like with VIM, so I can do split for example Vertically, and inside do a split for Horizontal editor. And we can close each split by right click on the movable splitter and select it from a menu item.<br />
<br />
* VIM keyboard support - require implementation of a command line like that can accept keyboards like with the VIM text editor. <br />
:A good example is Qt Creator: you press Alt+V+V and get into FakeVim mode, where most vim commands work<br />
:Question: what do you mean by keyboard? Another keyboard layout? Different shortcuts keys? Shortcut keys can already be defined via the Tools menu<br />
<br />
* Multi linguistic spell checkers for strings and comments, using aspell, hspell, ispell etc... (aspell and hspell already have binding for FPC)<br />
<br />
<br />
===Ideas that have been implemented===<br />
* (Done in 0.9.27) <s>When focusing/selecting one BEGIN the respective END should be in RED to show where it really ends.</s><br />
<br />
* (Done in 0.9.29) <s> Movable tabs, so we can place tabs as we wish instead of keeping them where they where opened. </s><br />
<br />
* (Done in 0.9.27) <s> Ability to have a way to fold code arbitrary by using comments with special chars such as </s><br />
some code {% /* } <-- start folding <br />
more code<br />
...<br />
...<br />
and more code {% */ } <-- stop folding <br />
<br />
* Done: if you click on an error message, the cursor jumps to the code line in question and highlights it.<s>Color code on errors with special underline or some type of color that the user can select/change that will help to locate where the problem is (not instead of the error message that exists today).</s><br />
<br />
* Done: see below <s>Ability to keep the string mark (that added to 0.9.27) of a word/selected string as permanent with a toggle of a menu item/key/toolbar or something</s><br />
: QUESTION: Does that refer to the "highlight all occurrences" of "word under caret"/"current selection"?<br />
: That is possible (try alt-M)<br />
<br />
* (Done: Lazarus 1.0+: context-sensitive help is included with at least the windows installer. See [[Installing Help in the IDE]] <s>Inline help for a command/reserve word that the mouse cursor/keyboard caret are under that word (not instead of the tooltip that exists today when the mouse is hover the command/variable).</s><br />
<br />
* (Done) <s>When pressing on CTRL on a file/variable/type etc.. that we are trying to load, it will place a tooltip telling what is going to be opened (the file + the line number)</s> (The information is shown when hovering over the variable)<br />
<br />
* Done in 0.9.29 <s>Ability to save and load color scheme for syntax highlight.</s><br />
<br />
* Done (present in at least 1.2): see Edit/Find in Files which has a replace option <s>Within the "Edit" menu, add an option called "Replace in files...", which allow find and replace text in all the units of the application, doing it at once.</s><br />
<br />
===Improvement of the menu and toolbars===<br />
* to allow end user customization<br />
* to obtain more styled menu (similar as Shagrouni xp-menu style)<br />
<br />
==Integrated and Working Debugger==<br />
Debugging from inside the IDE can be a frustrating process. I believe this is a combination of GDB being more C/C++ centric, or because it is a more generalized standalone debugger. Either way, I think the ultimate solution is to write a custom debugger for use with FPC and Lazarus IDE. This way it will be possible for the debugger to support ALL Object Pascal and Lazarus IDE requirements, or maybe even be compiled into the Lazarus IDE itself. GDB does support Object Pascal, but not nearly at the level it does with C/C++.<br />
<br />
An IDE without sufficient debugging support is a hard sell to would-be contributors or Delphi converts. This might also have contributed to some of the negative comments received in the Delphi non-technical newsgroup. Make no mistake, I love the many unique IDE features Lazarus has to offer - it beats Delphi IDE by far.<br />
<br />
Apart from the standard Lazarus debugging solution using gdb there are multiplle custom written debuggers, partly or completely implemented in Object Pascal:<br />
<br />
* [[FpGdbmiDebugger]]: uses gdb but also adds Pascal code. In development, experimental; included with Lazarus<br />
* '''fpdebug''': Located in the <laz>/debugger/fpdebug/ directory. Unfortunately at the time of this writing, that project is Windows only.<br />
* '''[http://sourceforge.net/projects/duby/ Duby]''': A research project on SourceForge.net.<br />
* '''[https://github.com/graemeg/fpdebug fpdebug (fork of duby)]''': It's a fork of Duby with some further development work. I didn't know about the name conflict with the Lazarus one though. The joys of the FP* prefix. :)<br />
<br />
Please try out these projects and contribute if you can.<br />
<br />
==Object Inspector==<br />
<br />
===Search field===<br />
add a "search" text box at the top or bottom (preferred, maybe user settable) of Object Inspector to be able to search for a name or value (maybe with right click menu checkable options on whether Name or Value or both are searched) in the properties/events list<br />
<br />
Question: What about sub properties? <br />
<br />
===Recent page===<br />
add a "Recent" tab to Object Inspector apart from the "Favorites" one, would be more useful than the Favorites one since it's automatic (would keep all properties/events that have been edited [fields that have either been changed or ENTER was pressed to CONFIRM/REset their current value - focus lost events shouldn't be considered editing if value of property/event field didn't change])<br />
<br />
Question: How are items removed from the list?<br />
<br />
<br />
===Not registered component classes===<br />
Add a field in the object inspector to allow specifying the real class that will be instantiated, with that will allow to uses derived classes without remake/link the IDE, of course the new fields for the real class will not be available to edit in designer.<br />
An example:<br />
We place a TEdit in a form, but we want to use a derived class we made that add a new field/property/method to TEdit and we will use that new field/property/method programming but in design time it's enough to work with TEdit, actually there is an option to change the class but only to another one that's already linked on the IDE.<br />
<br />
{{Note| The class must be registered. This is needed for streaming and RTTI. If you don't want to register the real class, then register a fake class. It would be possible to create an artificial derived class from a registered component class on the fly. This has nothing to do with the OI. A dialog to manage all artificial classes must be implemented and a menu item must be added somewhere.}}<br />
<br />
==Refactoring==<br />
===Global Variable/Method renaming===<br />
<s>Proper renaming (as in if I rename a field in an object it can change everything that uses it but NOT other stuff that happens to have the same name) -Plugwash</s><br />
: Already implemented: See Source Editor -> popup menu -> refactoring -> rename identifier<br />
<br />
===Parameter Renaming in Methods===<br />
adding a parameter to a method (and updating everything that uses it) -Plugwash<br />
: How should that work? What should the IDE/codetools put as parameter at the places?<br />
:: You specify that when you ask for the parameter to be added. [[User:Plugwash|Plugwash]] 05:09, 30 September 2006 (CEST)<br />
: For example, you add a parameter "b: boolean". The method is used a 100 times.<br />
* Possibility 1: You add a default parameter too. No change to the using methods is needed.<br />
* Possibility 2: You press compile and the compiler will jump to every occurence and you can decide, what to do.<br />
* Possibility 3: A new dialog is added to the IDE, where you can specify to insert a ",false" at every occurence.<br />
* Possibility 4: ?<br />
Do you have 3 in mind or 4?<br />
<br />
===Parameter reordering===<br />
like Delphi. A dialog to add, remove, reorder parameters of a function, method, property.<br />
<br />
===Improvement of the IDE like GExperts does for Delphi===<br />
* Done: see Project/Publish project <s>Backup tool...</s><br />
* Tab : provision to set Tab spacing<br />
:Question: please indicate what you specifically miss in Tools/Editor/General/Tab and Indent<br />
* Rename Components (where it is possible too, to fill some properties in this moment. f.e. Button: Caption, Width, Height, Action)<br />
<br />
== I have a dream of components : Jedi ==<br />
Sure I switch immediately from Delphi to Lazarus.<br />
* The Jedi components are a mix of OS dependant, Borland dependant and architecture specific code. I doubt these will ever work on anything but windows/x86. (and maybe win64 with a bit shoehorning). Example: To use a string routine in the strings unit of JCL, you have to fix like 12 units, some of which poke around in the Borland specific debug code. And then you haven't even reached the units of the JVCL, besides this there is a [[licensing]] problem. [[User:Marcov|Marcov]] 18:27, 4 October 2008 (CEST)<br />
* A lot of Jedi code has been implemented in FPC already. Question: do you need more? What components exactly? --[[User:BigChimp|BigChimp]] 15:16, 28 March 2014 (CET)<br />
<br />
==Code completion==<br />
===Create/Free objects===<br />
Declare an object myObj:TMyClass into a TForm class an type some Ctrl-Shift-Key, then the IDE adds a line myObj:=TMyClass.Create in FormCreate and myObj.Free in FormDestroy. -Rednaxel<br />
<br />
===Add list properties===<br />
Declaring an indexed property like 'property Items[i: integer]: TAType' and using this feature (Ctrl-Shift-Key, Menu), should popup a dialog to setup some parameters and then it should add a private variable fItems: TFPList; (or 'array of' or TList or ^AType), create code in the constructor, destroy code in the destructor and access methods GetItems, SetItems.<br />
<br />
==Visual Form Inheritance==<br />
VFI (Visual From Inheritance) works in Lazarus but there are some missing features:<br />
*When ancestor and descendant are open in the IDE and a property of the ancestor is changed, then change the descendant too.<br />
<br />
==Conditional Compiler Options==<br />
<br />
See [[Conditional Compiler Options]].<br />
<br />
==Help==<br />
===A small tutorial for Object Oriented Programming===<br />
I wish to have in Lazarus as in Eclipse in the Help menu a Tutorial for Object Oriented Programming.<br />
* This is a good idea, but I think a '''offline''' help browser is first required. Lucky for you, I already implemented such a beast, called [http://sourceforge.net/projects/fpgui/files/fpGUI/1.4/ DocView]. :-) I also have a few old programming manuals around that could contribute to the contents. I know Borland released the OOP chapter what was included in the Turbo Pascal v5.5 & v6 manuals for everybody to use (freely downloadable). So maybe that will be the best place to start. A downloadable copy of the OOP Chapter can be found [http://geldenhuys.co.uk/articles/ here]. I also have freely available INF e-books (viewable with DocView) that cover the introduction to Object Pascal and OOP programming (follow [http://geldenhuys.co.uk/~graemeg/inf_books/ this] link) --[[User:Ggeldenhuys|Ggeldenhuys]] 13:44, 29 November 2013 (GMT)<br />
* Offline help has been included since Lazarus 1.0x with lhelp and the chm format. A help menu item that shows lhelp is included with Laz trunk. Maybe the .inf books could be converted to chm and included with the Lazarus installer --[[User:BigChimp|BigChimp]] 14:21, 30 November 2013 (CET)<br />
<br />
==Better Macro support by making them easier to find==<br />
See the feature request [http://bugs.freepascal.org/view.php?id=14558 #14558] in Mantis. In summary, add a button next to EditBox controls which support macro usage. Clicking the button will display a popup menu with available macros at that level and insert the selected macro into the EditBox at the cursor position.<br />
<br />
==Copy and Paste Support for a lazy programmer (in properties-editor) ==<br />
<s>Maybe it's by design (because of the same behaviour under win and mac)... but I think, it's a little bit of annoying. When I try to copy the chosen "name" of a component out of proterties-editor by selecting it and ctrl+c, I will not get the text of the name, but the object/component description itself (which is useless, I guess). There is not even a "copy" item in the context-menu. I use very long descriptive names for components (and variables) and it would be nice, to get these unhandy names somehow into the clipboard. [[User:KaLi|KaLi]] 14:56, 30 June 2010 (CEST)</s><br />
: This seems to work in 0.9.31, both Ctrl+C and via context-menu [http://wiki.lazarus.freepascal.org/User:Bart Bart]<br />
<br />
==Code Library Window or Tab ==<br />
<s>It would be great to have a built in location to store all those useful pieces of code. Ones that you have created, or found useful.<br />
<br />
My ideal feature list would be:<br />
* Save and Load my personal code<br />
* Attach Zip file ( useful for keeping a sample project, showing the code in use).<br />
* Ability to Upload Code / zip to central online repository.<br />
* Ability to synchronize or select repository code and download to my own code store.<br />
* Code could be sectioned into well thought out categories, like Types of controls, Libraries, complete project examples, Tutorials, etc.<br />
* A place to show the most recent code submitted by Category.<br />
<br />
It would also be a good place to help people who need some assistance. I would have the following options:<br />
* Option to Ask for help on a control or subject matter.<br />
* Notification when a solution is uploaded to the repository.<br />
* Maybe a points system rating the assistance given out of 10 ( 1 being not useful, 10 being just what I needed)</s><br />
<br />
:The "Code Librarian" third party code library tool is available made by Lazarus forum user taazz. Helping him with incorporating these features (if he wants to) could be the best way of getting this functionality: http://forum.lazarus.freepascal.org/index.php/topic,22752.0.html and https://sourceforge.net/projects/codelibrarian/<br />
<br />
== Write and run unit tests from subpackage of project being tested ==<br />
The main idea is to have ability to write and run Unit tests from a subpackage of main project. '''Please see [[Feature Ideas/UnitTests]]'''<br />
<br />
=LCL=<br />
<br />
==Components==<br />
<br />
Components that are possible to make that will work across all platforms supported by Lazarus<br />
* Do you mean customdrawn components? If so, that is already possible. I think the TStringGrid is a customdrawn component. Alternatively, look at [[fpGUI]] for a completely customdrawn GUI toolkit. --[[User:Ggeldenhuys|Ggeldenhuys]] 23:56, 30 September 2009 (CEST)<br />
<br />
===Visual===<br />
* The existing '''TDBLookupComboBox''', could be greatly enhanced by something like an "'''.IsFiltered''' property": If true, the control should reduce its list of visible (and hence selectable) values in the dropdown list by filtering the DataField by the current DBLookupComboBox while editing. This means, onChange (resulting in DBLookupComboBox.Text updated to someString) automatically reduces the list to '''SELECT lookup_field FROM lookup_table WHERE lookup_field LIKE %'+someString+'%'''. A feature like that would greatly enhance the usability of Lazarus made database applications! <br>Compare other similar projects: [https://www.freelancer.com/projects/Delphi/Custom-Delphi-TDBLookupComboBox/ 1] [https://www.devexpress.com/Support/Center/Question/Details/B196085/filtering-dataset-of-tcxdblookupcombobox 2] or [https://www.drupal.org/sandbox/jauzah/1748434 3]<br />
<br />
*Already implemented [[Add Help to Your Application]]: <s>Help system for apps created by Laz! It is a plugin system. That's why it supports cross-platform help system and using the OS's native help system.</s><br />
<br />
*The current LCL TStringGrid is a nice improvement over Delphi's feeble control with the same name. Would be great if it could be improved even more!<br />
**<s>Support for data validation event handler, similar to Orpheus grid's OnUserValidation event.</s> ''There are many events, for example OnEditingDone, and OnValidateEntry to do this. See [[Grids Reference Page]] and [[Event order]]''<br />
**Support for retrieving, displaying, editing and storing data that are stored in an existing memory structure or in a file rather than in grid itself, similar to the Orpheus grid's OnGetCellData and OnGetCellAttributes events. ''There is the TTIGrid, that can show TCollection, TList and TFPList of TPersistent. What else do you need? Additionally, you can bind a TBufDataset to a dbgrid...''<br />
**A TImage component wich support transparent winxp alpha 32 bit icon images<br />
**<s>Support for RightToLeft BidiMode.</s> Fixed in 0.9.31 according to http://bugs.freepascal.org/view.php?id=18918. Bug report tracking all RTL/Bidi: http://bugs.freepascal.org/view.php?id=19303 If there are still bugs, please report them to the bug tracker.<br />
*TTrayIcon<br />
** Add a TImageList property in TTrayIcon to change TrayIcon icon or animate it<br />
<br />
===NonVisual===<br />
*Clipboard and <s>TTimer</s> that don't depend on LCL. If you use these in a library or console app, the compiler drags in a lot of unused and unneeded LCL code. If you have multiple DLL's, this code is duplicated in each. Current implementations appear to follow the Delphi design approach, where Clipboard and TTimer have dependencies on the VCL - this probably wasn't necessary.<br />
** TfpTimer is a non-LCL timer already available in FPC in unit '''fptimer.pp'''. Online help is available [http://lazarus-ccr.sourceforge.net/docs/fcl/fptimer/index.html here]. --[[User:Ggeldenhuys|Ggeldenhuys]] 14:38, 2 September 2009 (CEST)<br />
** This may be true on Windows, but it´s False for Linux. I recently implemented TTimer for qt interface and the implementation calls Qt API. I think the same applies to Clipboard, since the clipboard depends on the widgetset used too (gtk or qt for example), not only on the operating system. --[[User:Sekelsenmat|Sekelsenmat]] 20:40, 5 Mar 2006 (CET)<br />
** The LCL is a visual component library. None visual components are provided by the FCL.<br />
** Lazarus will only provide components based on the LCL.<br />
<br />
==PDA Support==<br />
<br />
Something that currently does not exist is a complete multiplatform solution for PDAs. If we can implement this, Lazarus will become the first multiplatform RAD for PDAs ever created. Some devices work with Java, some work with c++ and Qtopia, some work with their particular APIs, there is no single solution currently that can embrace a large portion of PDAs. Application have to be redone for every PDA or simply just run on one of them (what most people do).<br />
<br />
The LCL implements many things. It is not necessary to implement them all to have a reasonably working Lazarus PDA widgetset. The most important things to be implementeded for PDAs are:<br />
<br />
* TApplication<br />
* TForm<br />
* TScreen<br />
* TCanvas and painting<br />
* Most Events (onClick and OnPaint at least)<br />
* Basic widgets like: TButton, TLabel, TEdit, TMemo.<br />
* Only minimum necessary LCLIntf functions to make TCanvas work. (GetDC, ReleaseDC, BeginPaint, EndPaint and some painting functions)<br />
<br />
Others can be easily implemented by people who need them after those are ready.<br />
<br />
Here is a list of some PDAs and the status of their support on Free Pascal / Lazarus:<br />
<br />
* Windows CE - The compiler already works really well cross compiling for Windows CE. The [[Windows CE Interface]] is under implementation.<br />
* Symbian OS - Possible for their ARM devices. Requires first adding a new Runtime Library for this OS to the Compiler. This OS has it's own API. There are open source projects for python and c to work on Symbian OS, so Free Pascal should work as well when a RTL is written.<br />
* Qtopia - For Zaurus and other linux-based PDAs. This is much easier now that basic Qt4 widgetset has being implemented, because Qtopia is very similar to Qt4. Some magick on the bindings is expected to make the same widgetset code to run for both Qtopia and Qt4.<br />
* Java - Some handheld devices, specially phones, only support java bytecode. May seam a little odd, but there is a Pascal Compiler capable of compiling the source into a jar and then into bytecode. It's name is Midlet Pascal http://www.midletpascal.com/ It may be possible to develop a similar technology that adds a java bytecode target for Free Pascal. Some people already start porting midletpascal to delphi http://forum.boolean.name/attachment.php?attachmentid=7975&d=1255392966, follow instructions on http://www.pascalgamedevelopment.com/forum/index.php?topic=5466.0 to access it.<br />
* Palm OS - PalmOS 5 Garnet support requires that first the 68k compiler is working (runs on ARM processor with a kind of emulation) and then a RTL for palmos needs to be written. Only Free Pascal 1.0 supports 68k, this wasn't updated and the new compiler 2.0 doesn't support it yet (work in progress by [[fpc:User:Chain-Q]]), so will be a problem.<br />
<br />
PalmOS 6 Cobalt is fully arm, so it only requires a rtl, but it has zero devices working on it currently and won't be on the market until 2007 at least.<br />
<br />
Other compilers that support this target: [http://www.ppcompiler.org Pascal & Palm Compiler] and [http://hspascal.fihl.net/ HsPascal]. Unfortunately those compilers are not open source, so we can't use their code, we need to implement PalmOS RTL from zero.<br />
<br />
==More Interfaces==<br />
* Cocoa - <s>Requires that first OpenSTEP bindings are created for Free Pascal.</s> Cocoa interface support has been started; see [[Cocoa Interface]]<br />
* BeAPI - interface for Haiku, ZetaOS and BeOS. There is no powerful RAD on this OS.<br />
** Bindings to the BeAPI has been started - though not part of the Lazarus project. Have a look at SourceForge [http://befpc.sourceforge.net/ befpc] project.<br />
* [http://www.libsdl.org SDL] - something like what was done in [http://www.kanzelsberger.com/pixel/ Pixel Image Editor].<br />
* MacApp 2.0 - For 68k-based Mac computers. MacApp was Apple Computer's primary object oriented application framework for the Mac OS for much of the 1990s. First released in 1985, it is arguably the first such system to be widely used, notably on a microcomputer platform. Microsoft's MFC and Borland's OWL were both based directly on MacApp concepts. This framework was completely written on Object Pascal, so it should integrate really nicely with Free Pascal and Lazarus. When Apple moved to PowerPC it also dropped Object Pascal support, but that's another story. A emulator for 68k-Mac can be easely set up with [http://basilisk.cebix.net/ BasiliskII]. There is also a project called MacApp2PPC that upgraded MacApp pascal code to run on Power PCs. <br />
* OS/2 native - Free Pascal works well with OS/2, so this should be quite possible.<br />
* <s>Solaris - OpenSolaris versions exist and it's quite similar to Linux so why not ?</s> For information on the Solaris port of Lazarus, see: [[Lazarus on Solaris]]<br />
* Web Interface - Application compiles to an embedded HTTP Server who serves forms in ajax pages (or compiles it to an Apache Module), like Intraweb in Delphi. Discussion in http://www.lazarus.freepascal.org/index.php?name=PNphpBB2&file=viewtopic&t=2489<br />
* Already implemented: <s>[http://fpgui.sourceforge.net/ fpGUI] - A widget set written in Free Pascal without any large library requirements. fpGUI talks directly to the underlying graphics library and is very easy to port to new platforms. Currently it supports Linux, ARM-Linux, FreeBSD, Windows and WinCE.</s> - Under development here: [[fpGUI Interface]]<br />
<br />
=== improved EventQueue ===<br />
* [[Lazarus improved Event Queue]]<br />
<br />
=== Lua ===<br />
* Support for Lua interfacing. (Binary modules?) <br />
** What is Lua interfacing? Is it a graphical widgetset? What is the difference between what you want and is supplied by the lua units of fpc: http://svn.freepascal.org/svn/fpc/trunk/packages/lua/<br />
** Perhaps the poster wanted to use the Lua scripting language to access the LCL widgetset. Had a quick look at the FPC lua package mentioned above: no readme, no test, no demo, so not easy to see what that package does/can do. Perhaps it can be used as-is to do what the poster wants; in that case, some additional samples/documentation may be handy. BigChimp, September 2012<br />
<br />
=Visual Improvements=<br />
<br />
==An idea for a splash screen==<br />
[[Image: splash_logo2_.png]]<br />
<br />
The font for "write once..." is DejaVue Serif Condensed, for "Lazarus" is Phantom, and for "object pascal" is Tahoma.<br />
<br />
If you want to change the splash logo on Windows, in your main Lazarus installation folder find "images" folder and there find "splash_logo.bat". Then edit and run it or replace "splash_logo.png" and run "splash_logo.bat".<br />
=== critique ===<br />
* as if people's desktops are not already cluttered to the max... not desirable<br />
<br />
=FPC=<br />
==Per-type Byte Alignment==<br />
A means to align variables and records in a unit is already possible with compiler directives, but is somewhat messy and might cause conflicts in some situations. What I propose is an addition to the Free Pascal syntax that forces all variables of a defined type to be aligned to a particular boundary. e.g.<br />
<br />
<syntaxhighlight><br />
type<br />
AlignedDouble = Double align 16;<br />
<br />
type<br />
TVector4f = packed record<br />
X, Y, Z, W: Single;<br />
end align 16;<br />
<br />
type<br />
TVector4fArray = array of TVector4f align 32;<br />
{ tighter restrictions than TVector4f, so it's okay. Note that this should probably align Var[0] to a 32-byte boundary, not necessarily Var as a whole }<br />
</syntaxhighlight><br />
Such aligned types are useful and even necessary for when working with SSE and AVX, where significant speed gains can be achieved with aligned data (and some operations require it).<br />
<br />
Apparently Delphi supports something like this already, but it isn't well-documented.<br />
===Nuances===<br />
* The exact syntax.<br />
* Cross-platform support. Do all platforms support memory alignment?<br />
* Exact error messages or behaviour if you specify a non-power of 2 alignment.<br />
* What happens if you try to typecast an unaligned variable to an aligned type? (Aligned to unaligned should be fine)<br />
* What happens if you try to typecast a pointer to an unaligned type to a pointer to an aligned type?<br />
* What happens if you, say, declare a type aligned to 16 bytes, and then declare another type that is equal to it but is only aligned to 8 bytes?<br />
* What happens if you, say, declare a type aligned to 16 bytes, then use it as a field in a record type, aligned or otherwise?<br />
[[User:CuriousKit|CuriousKit]] ([[User talk:CuriousKit|talk]]) 18:28, 5 December 2017 (CET)<br />
<br />
=="vectorcall;" modifier for Win32 and Win64==<br />
This function modifier is the only unique modifier for Win64 (although it can be used in Win32 too), introduced by Microsoft at the behest of game developers who wish to reduce the overhead of passing vectors and the like into subroutines. The basic details are the same as the regular Win64 calling convention, but attempt to vectorise certain record types and pass them in their entirety through a single XMM register (something which is already possible in Linux64 sometimes). Details can be found here: https://msdn.microsoft.com/en-us/library/dn375768.aspx<br />
<br />
This may require the byte alignment feature described above.<br />
===Nuances===<br />
* What happens if it is used on a platform other than Win32 or Win64? Does a compiler error occur or is it ignored with a warning?<br />
[[User:CuriousKit|CuriousKit]] ([[User talk:CuriousKit|talk]]) 23:04, 5 December 2017 (CET)<br />
<br />
* As an example of prior art I think Vector Pascal[https://sourceforge.net/projects/vectorpascalcom/] is noteworthy. [[User:MarkMLl|MarkMLl]] ([[User talk:MarkMLl|talk]]) 09:12, 6 December 2017 (CET)<br />
=="default"-value in a proc or function call ==<br />
* There is a limitation in the freepascal-Syntax where you can not depend on the default-parameter lefthand from an explicit parameter. I suggest a possibility where you can say "default" in a function-call, and set other parameters at the same time.<br />
<br />
<br />
<syntaxhighlight><br />
program DefaultParameter;<br />
<br />
{$mode objfpc}{$H+}<br />
<br />
type<br />
Pilots = (Charles, Amelia, Belly, Louis);<br />
<br />
procedure Fly(Pilot: Pilots = Belly; Copilot: Pilots = Charles);<br />
begin<br />
if (Pilot=Copilot) then<br />
halt(1);<br />
end;<br />
<br />
begin<br />
Fly; // we fly with Belly+Charles<br />
Fly(); // we fly with Belly+Charles<br />
Fly(Amelia); // we fly with Amelia+Charles<br />
Fly(Louis, Belly); <br />
<br />
// The following "default" is my Feature Idea<br />
// │<br />
// v<br />
Fly(default, Amelia); // we fly with Belly+Amelia<br />
end. <br />
</syntaxhighlight><br />
===Critique===<br />
*If such a feature should exist, wouldn't it be more straightforward to simply not specify anything before the comma? (i.e. "Fly(, Amelia);") [[User:CuriousKit|CuriousKit]] ([[User talk:CuriousKit|talk]]) 14:50, 7 December 2017 (CET)<br />
<br />
=Other=<br />
==Fixes branch releases==<br />
Already done: <s>Currently we only have snapshots of the fixes branch, and it would be nice to also have them as releases. To have releases, those builds would have to be tested by someone, so I volunteer for that. What is needed is a testing checklist, and the start of it can be found on my page, [[User:Arny]]. Any further ideas are welcome!</s><br />
<br />
* This is already done and maintained for v0.9.28 onwards of Lazarus. Downloads of ''fixes'' releases are available on SourceForge or at [[git_mirrors|GitHub]]. --[[User:Ggeldenhuys|Ggeldenhuys]] 16:03, 16 November 2009 (CET)<br />
<br />
==See Also==<br />
* [[Bounties]] - A way to make sure your feature idea is implemented.<br />
* [[How do I create a bug report]] general information on submitting bugs, what should be covered in a bug report, and using the bug tracker. <br />
* [[Tips on writing bug reports]] detailed information on what should be covered in a bug report. <br />
* [[Database bug reporting]] Specific info and sample programs for database bugs <br />
* [[Moderating the bug tracker]] <br />
<br />
<br />
[[Category:Lazarus]]<br />
[[Category:Proposals]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Feature_Ideas&diff=114222Feature Ideas2017-12-11T12:39:01Z<p>Arabidopsis: /* Visual */</p>
<hr />
<div><!--- {{Feature Ideas}} ---><br />
{{Warning|This page is intended to '''collect ideas''' for features that '''could''' be included in FPC/Lazarus. Putting an idea here does '''not mean''' it '''WILL''' be put into FPC/Lazarus. It's just a place to gather ideas. Think of this as more of a wishlist.}}<br />
<br />
If it is clear who is going to implement the feature, for example, because you have a patch or somebody on the mailing list volunteered to implement it, then it can be added to the [http://bugs.freepascal.org/ FPC/Lazarus Bugtracker], so it can be tracked and scheduled for a release.<br />
<br />
If you really want to see a feature implemented urgently, have a look at [[Bounties]] to pay for development.<br />
<br />
Tags: Wish, Wishes, Wishlist<br />
<br />
=IDE=<br />
Features that could be included in the IDE<br />
<br />
==An Integrated IDE==<br />
<br />
(Partly) done in 0.9.29: see [[Anchor Docking]]<br />
{{Warning|There are known bugs in the docking implementation. The Lazarus developers are aware of these and will be working on them if time permits. If you want to help speed this up by providing code, please get in touch on the Lazarus mailing list}}<br />
<br />
There are too many windows in the IDE. The more features you use the more they pile up on your desktop and become hidden behind other windows. This is confusing for the newbie and otherwise a mess.<br />
Docking windows as found in some IDEs might seem to give flexibility however in practice it is a two dimensional solution. You accidentally undock a window and have it hanging on your mouse while you try to put it back where it was.<br />
It would be better to use conventional splitters and tab controls to put it all together into a logical layout.<br />
* Associated windows should be converted to Frames and then placed on a single form or tab page on the main form<br />
* 1. There should be a Welcome Page having new project wizards, a list of recent projects, help and resources<br />
* 2. A Development tab containing sub tabs for code and for form design<br />
:* a. Code tab including Code Explorer, Source Editor and Project Manager<br />
:* b. Form design tab including Object Inspector, Form designer and Component Palette<br />
* 3 Debug tab containing the Debug windows as Frames.<br />
<br />
* 4 since an integrated IDE has less screen real estate, swapping in and out windows need to be easier.<br />
:* a. Probably a view concept is needed (different layout in debug then in normal (debug)). Maybe differentiate dependning on the F12 state (designer visible) too.<br />
:* b. Big missing feature is the ability to let tabs page in from the side (a tab system to the left and right from the screen, ideal for process manager). When such tab loses focus, it pops back.<br />
<br />
==Auto-generated database form==<br />
If you have set up a TSQLQuery, it would be nice to be able to let the IDE autogenerate a from with appropriate controls for all fields. --[[User:BigChimp|BigChimp]] 16:39, 8 August 2014 (CEST)<br />
<br />
==Easier Dragging & Dropping==<br />
===Ideas that have been implemented===<br />
Done in 0.9.29: Options / Form editor / Ask name on create<br />
<s>pool: after you add a component at Form, what is your next action? Editing Name/Caption in OI.<br />
Would be nice having OI focused and a key field like Name/Caption/Text selected. It would be very intuitive just having to type after dropping the component.</s><br />
<br />
==Common==<br />
* enable menu access through access keys like under windows (i hate mouse sessions :o)<br />
example: <alt>-<f> for file menu. '''Question: what operating system/widget set are you talking about?'''<br />
<br />
===Ideas that have been implemented===<br />
* (Done in 1.1) <s>Open files in the same folder as the current tab editor, like SCite does, it's a bit annoying to navigate from folder to folder every time you need open a file related to the one we are editing at the moment.</s><br />
<br />
==Source Editor==<br />
* Multiple splitting (and close the split) the editor to horizontal and vertical views like with VIM, so I can do split for example Vertically, and inside do a split for Horizontal editor. And we can close each split by right click on the movable splitter and select it from a menu item.<br />
<br />
* VIM keyboard support - require implementation of a command line like that can accept keyboards like with the VIM text editor. <br />
:A good example is Qt Creator: you press Alt+V+V and get into FakeVim mode, where most vim commands work<br />
:Question: what do you mean by keyboard? Another keyboard layout? Different shortcuts keys? Shortcut keys can already be defined via the Tools menu<br />
<br />
* Multi linguistic spell checkers for strings and comments, using aspell, hspell, ispell etc... (aspell and hspell already have binding for FPC)<br />
<br />
<br />
===Ideas that have been implemented===<br />
* (Done in 0.9.27) <s>When focusing/selecting one BEGIN the respective END should be in RED to show where it really ends.</s><br />
<br />
* (Done in 0.9.29) <s> Movable tabs, so we can place tabs as we wish instead of keeping them where they where opened. </s><br />
<br />
* (Done in 0.9.27) <s> Ability to have a way to fold code arbitrary by using comments with special chars such as </s><br />
some code {% /* } <-- start folding <br />
more code<br />
...<br />
...<br />
and more code {% */ } <-- stop folding <br />
<br />
* Done: if you click on an error message, the cursor jumps to the code line in question and highlights it.<s>Color code on errors with special underline or some type of color that the user can select/change that will help to locate where the problem is (not instead of the error message that exists today).</s><br />
<br />
* Done: see below <s>Ability to keep the string mark (that added to 0.9.27) of a word/selected string as permanent with a toggle of a menu item/key/toolbar or something</s><br />
: QUESTION: Does that refer to the "highlight all occurrences" of "word under caret"/"current selection"?<br />
: That is possible (try alt-M)<br />
<br />
* (Done: Lazarus 1.0+: context-sensitive help is included with at least the windows installer. See [[Installing Help in the IDE]] <s>Inline help for a command/reserve word that the mouse cursor/keyboard caret are under that word (not instead of the tooltip that exists today when the mouse is hover the command/variable).</s><br />
<br />
* (Done) <s>When pressing on CTRL on a file/variable/type etc.. that we are trying to load, it will place a tooltip telling what is going to be opened (the file + the line number)</s> (The information is shown when hovering over the variable)<br />
<br />
* Done in 0.9.29 <s>Ability to save and load color scheme for syntax highlight.</s><br />
<br />
* Done (present in at least 1.2): see Edit/Find in Files which has a replace option <s>Within the "Edit" menu, add an option called "Replace in files...", which allow find and replace text in all the units of the application, doing it at once.</s><br />
<br />
===Improvement of the menu and toolbars===<br />
* to allow end user customization<br />
* to obtain more styled menu (similar as Shagrouni xp-menu style)<br />
<br />
==Integrated and Working Debugger==<br />
Debugging from inside the IDE can be a frustrating process. I believe this is a combination of GDB being more C/C++ centric, or because it is a more generalized standalone debugger. Either way, I think the ultimate solution is to write a custom debugger for use with FPC and Lazarus IDE. This way it will be possible for the debugger to support ALL Object Pascal and Lazarus IDE requirements, or maybe even be compiled into the Lazarus IDE itself. GDB does support Object Pascal, but not nearly at the level it does with C/C++.<br />
<br />
An IDE without sufficient debugging support is a hard sell to would-be contributors or Delphi converts. This might also have contributed to some of the negative comments received in the Delphi non-technical newsgroup. Make no mistake, I love the many unique IDE features Lazarus has to offer - it beats Delphi IDE by far.<br />
<br />
Apart from the standard Lazarus debugging solution using gdb there are multiplle custom written debuggers, partly or completely implemented in Object Pascal:<br />
<br />
* [[FpGdbmiDebugger]]: uses gdb but also adds Pascal code. In development, experimental; included with Lazarus<br />
* '''fpdebug''': Located in the <laz>/debugger/fpdebug/ directory. Unfortunately at the time of this writing, that project is Windows only.<br />
* '''[http://sourceforge.net/projects/duby/ Duby]''': A research project on SourceForge.net.<br />
* '''[https://github.com/graemeg/fpdebug fpdebug (fork of duby)]''': It's a fork of Duby with some further development work. I didn't know about the name conflict with the Lazarus one though. The joys of the FP* prefix. :)<br />
<br />
Please try out these projects and contribute if you can.<br />
<br />
==Object Inspector==<br />
<br />
===Search field===<br />
add a "search" text box at the top or bottom (preferred, maybe user settable) of Object Inspector to be able to search for a name or value (maybe with right click menu checkable options on whether Name or Value or both are searched) in the properties/events list<br />
<br />
Question: What about sub properties? <br />
<br />
===Recent page===<br />
add a "Recent" tab to Object Inspector apart from the "Favorites" one, would be more useful than the Favorites one since it's automatic (would keep all properties/events that have been edited [fields that have either been changed or ENTER was pressed to CONFIRM/REset their current value - focus lost events shouldn't be considered editing if value of property/event field didn't change])<br />
<br />
Question: How are items removed from the list?<br />
<br />
<br />
===Not registered component classes===<br />
Add a field in the object inspector to allow specifying the real class that will be instantiated, with that will allow to uses derived classes without remake/link the IDE, of course the new fields for the real class will not be available to edit in designer.<br />
An example:<br />
We place a TEdit in a form, but we want to use a derived class we made that add a new field/property/method to TEdit and we will use that new field/property/method programming but in design time it's enough to work with TEdit, actually there is an option to change the class but only to another one that's already linked on the IDE.<br />
<br />
{{Note| The class must be registered. This is needed for streaming and RTTI. If you don't want to register the real class, then register a fake class. It would be possible to create an artificial derived class from a registered component class on the fly. This has nothing to do with the OI. A dialog to manage all artificial classes must be implemented and a menu item must be added somewhere.}}<br />
<br />
==Refactoring==<br />
===Global Variable/Method renaming===<br />
<s>Proper renaming (as in if I rename a field in an object it can change everything that uses it but NOT other stuff that happens to have the same name) -Plugwash</s><br />
: Already implemented: See Source Editor -> popup menu -> refactoring -> rename identifier<br />
<br />
===Parameter Renaming in Methods===<br />
adding a parameter to a method (and updating everything that uses it) -Plugwash<br />
: How should that work? What should the IDE/codetools put as parameter at the places?<br />
:: You specify that when you ask for the parameter to be added. [[User:Plugwash|Plugwash]] 05:09, 30 September 2006 (CEST)<br />
: For example, you add a parameter "b: boolean". The method is used a 100 times.<br />
* Possibility 1: You add a default parameter too. No change to the using methods is needed.<br />
* Possibility 2: You press compile and the compiler will jump to every occurence and you can decide, what to do.<br />
* Possibility 3: A new dialog is added to the IDE, where you can specify to insert a ",false" at every occurence.<br />
* Possibility 4: ?<br />
Do you have 3 in mind or 4?<br />
<br />
===Parameter reordering===<br />
like Delphi. A dialog to add, remove, reorder parameters of a function, method, property.<br />
<br />
===Improvement of the IDE like GExperts does for Delphi===<br />
* Done: see Project/Publish project <s>Backup tool...</s><br />
* Tab : provision to set Tab spacing<br />
:Question: please indicate what you specifically miss in Tools/Editor/General/Tab and Indent<br />
* Rename Components (where it is possible too, to fill some properties in this moment. f.e. Button: Caption, Width, Height, Action)<br />
<br />
== I have a dream of components : Jedi ==<br />
Sure I switch immediately from Delphi to Lazarus.<br />
* The Jedi components are a mix of OS dependant, Borland dependant and architecture specific code. I doubt these will ever work on anything but windows/x86. (and maybe win64 with a bit shoehorning). Example: To use a string routine in the strings unit of JCL, you have to fix like 12 units, some of which poke around in the Borland specific debug code. And then you haven't even reached the units of the JVCL, besides this there is a [[licensing]] problem. [[User:Marcov|Marcov]] 18:27, 4 October 2008 (CEST)<br />
* A lot of Jedi code has been implemented in FPC already. Question: do you need more? What components exactly? --[[User:BigChimp|BigChimp]] 15:16, 28 March 2014 (CET)<br />
<br />
==Code completion==<br />
===Create/Free objects===<br />
Declare an object myObj:TMyClass into a TForm class an type some Ctrl-Shift-Key, then the IDE adds a line myObj:=TMyClass.Create in FormCreate and myObj.Free in FormDestroy. -Rednaxel<br />
<br />
===Add list properties===<br />
Declaring an indexed property like 'property Items[i: integer]: TAType' and using this feature (Ctrl-Shift-Key, Menu), should popup a dialog to setup some parameters and then it should add a private variable fItems: TFPList; (or 'array of' or TList or ^AType), create code in the constructor, destroy code in the destructor and access methods GetItems, SetItems.<br />
<br />
==Visual Form Inheritance==<br />
VFI (Visual From Inheritance) works in Lazarus but there are some missing features:<br />
*When ancestor and descendant are open in the IDE and a property of the ancestor is changed, then change the descendant too.<br />
<br />
==Conditional Compiler Options==<br />
<br />
See [[Conditional Compiler Options]].<br />
<br />
==Help==<br />
===A small tutorial for Object Oriented Programming===<br />
I wish to have in Lazarus as in Eclipse in the Help menu a Tutorial for Object Oriented Programming.<br />
* This is a good idea, but I think a '''offline''' help browser is first required. Lucky for you, I already implemented such a beast, called [http://sourceforge.net/projects/fpgui/files/fpGUI/1.4/ DocView]. :-) I also have a few old programming manuals around that could contribute to the contents. I know Borland released the OOP chapter what was included in the Turbo Pascal v5.5 & v6 manuals for everybody to use (freely downloadable). So maybe that will be the best place to start. A downloadable copy of the OOP Chapter can be found [http://geldenhuys.co.uk/articles/ here]. I also have freely available INF e-books (viewable with DocView) that cover the introduction to Object Pascal and OOP programming (follow [http://geldenhuys.co.uk/~graemeg/inf_books/ this] link) --[[User:Ggeldenhuys|Ggeldenhuys]] 13:44, 29 November 2013 (GMT)<br />
* Offline help has been included since Lazarus 1.0x with lhelp and the chm format. A help menu item that shows lhelp is included with Laz trunk. Maybe the .inf books could be converted to chm and included with the Lazarus installer --[[User:BigChimp|BigChimp]] 14:21, 30 November 2013 (CET)<br />
<br />
==Better Macro support by making them easier to find==<br />
See the feature request [http://bugs.freepascal.org/view.php?id=14558 #14558] in Mantis. In summary, add a button next to EditBox controls which support macro usage. Clicking the button will display a popup menu with available macros at that level and insert the selected macro into the EditBox at the cursor position.<br />
<br />
==Copy and Paste Support for a lazy programmer (in properties-editor) ==<br />
<s>Maybe it's by design (because of the same behaviour under win and mac)... but I think, it's a little bit of annoying. When I try to copy the chosen "name" of a component out of proterties-editor by selecting it and ctrl+c, I will not get the text of the name, but the object/component description itself (which is useless, I guess). There is not even a "copy" item in the context-menu. I use very long descriptive names for components (and variables) and it would be nice, to get these unhandy names somehow into the clipboard. [[User:KaLi|KaLi]] 14:56, 30 June 2010 (CEST)</s><br />
: This seems to work in 0.9.31, both Ctrl+C and via context-menu [http://wiki.lazarus.freepascal.org/User:Bart Bart]<br />
<br />
==Code Library Window or Tab ==<br />
<s>It would be great to have a built in location to store all those useful pieces of code. Ones that you have created, or found useful.<br />
<br />
My ideal feature list would be:<br />
* Save and Load my personal code<br />
* Attach Zip file ( useful for keeping a sample project, showing the code in use).<br />
* Ability to Upload Code / zip to central online repository.<br />
* Ability to synchronize or select repository code and download to my own code store.<br />
* Code could be sectioned into well thought out categories, like Types of controls, Libraries, complete project examples, Tutorials, etc.<br />
* A place to show the most recent code submitted by Category.<br />
<br />
It would also be a good place to help people who need some assistance. I would have the following options:<br />
* Option to Ask for help on a control or subject matter.<br />
* Notification when a solution is uploaded to the repository.<br />
* Maybe a points system rating the assistance given out of 10 ( 1 being not useful, 10 being just what I needed)</s><br />
<br />
:The "Code Librarian" third party code library tool is available made by Lazarus forum user taazz. Helping him with incorporating these features (if he wants to) could be the best way of getting this functionality: http://forum.lazarus.freepascal.org/index.php/topic,22752.0.html and https://sourceforge.net/projects/codelibrarian/<br />
<br />
== Write and run unit tests from subpackage of project being tested ==<br />
The main idea is to have ability to write and run Unit tests from a subpackage of main project. '''Please see [[Feature Ideas/UnitTests]]'''<br />
<br />
=LCL=<br />
<br />
==Components==<br />
<br />
Components that are possible to make that will work across all platforms supported by Lazarus<br />
* Do you mean customdrawn components? If so, that is already possible. I think the TStringGrid is a customdrawn component. Alternatively, look at [[fpGUI]] for a completely customdrawn GUI toolkit. --[[User:Ggeldenhuys|Ggeldenhuys]] 23:56, 30 September 2009 (CEST)<br />
<br />
===Visual===<br />
* The existing '''TDBLookupComboBox''', could be greatly enhanced by something like an "'''.IsFiltered''' property": If true, the control should reduce its list of visible (and hence selectable) values in the dropdown list by filtering the DataField by the current DBLookupComboBox while editing. This means, onChange (resulting in DBLookupComboBox.Text updated to someString) automatically reduces the list to 'SELECT lookup_field FROM lookup_table WHERE lookup_field LIKE %'+someString+'%'. This would greatly enhance the usability of Lazarus made database applications! Compare other similar projects: [https://www.freelancer.com/projects/Delphi/Custom-Delphi-TDBLookupComboBox/ 2] [https://www.devexpress.com/Support/Center/Question/Details/B196085/filtering-dataset-of-tcxdblookupcombobox3] or [https://www.drupal.org/sandbox/jauzah/1748434 4]<br />
<br />
*Already implemented [[Add Help to Your Application]]: <s>Help system for apps created by Laz! It is a plugin system. That's why it supports cross-platform help system and using the OS's native help system.</s><br />
<br />
*The current LCL TStringGrid is a nice improvement over Delphi's feeble control with the same name. Would be great if it could be improved even more!<br />
**<s>Support for data validation event handler, similar to Orpheus grid's OnUserValidation event.</s> ''There are many events, for example OnEditingDone, and OnValidateEntry to do this. See [[Grids Reference Page]] and [[Event order]]''<br />
**Support for retrieving, displaying, editing and storing data that are stored in an existing memory structure or in a file rather than in grid itself, similar to the Orpheus grid's OnGetCellData and OnGetCellAttributes events. ''There is the TTIGrid, that can show TCollection, TList and TFPList of TPersistent. What else do you need? Additionally, you can bind a TBufDataset to a dbgrid...''<br />
**A TImage component wich support transparent winxp alpha 32 bit icon images<br />
**<s>Support for RightToLeft BidiMode.</s> Fixed in 0.9.31 according to http://bugs.freepascal.org/view.php?id=18918. Bug report tracking all RTL/Bidi: http://bugs.freepascal.org/view.php?id=19303 If there are still bugs, please report them to the bug tracker.<br />
*TTrayIcon<br />
** Add a TImageList property in TTrayIcon to change TrayIcon icon or animate it<br />
<br />
===NonVisual===<br />
*Clipboard and <s>TTimer</s> that don't depend on LCL. If you use these in a library or console app, the compiler drags in a lot of unused and unneeded LCL code. If you have multiple DLL's, this code is duplicated in each. Current implementations appear to follow the Delphi design approach, where Clipboard and TTimer have dependencies on the VCL - this probably wasn't necessary.<br />
** TfpTimer is a non-LCL timer already available in FPC in unit '''fptimer.pp'''. Online help is available [http://lazarus-ccr.sourceforge.net/docs/fcl/fptimer/index.html here]. --[[User:Ggeldenhuys|Ggeldenhuys]] 14:38, 2 September 2009 (CEST)<br />
** This may be true on Windows, but it´s False for Linux. I recently implemented TTimer for qt interface and the implementation calls Qt API. I think the same applies to Clipboard, since the clipboard depends on the widgetset used too (gtk or qt for example), not only on the operating system. --[[User:Sekelsenmat|Sekelsenmat]] 20:40, 5 Mar 2006 (CET)<br />
** The LCL is a visual component library. None visual components are provided by the FCL.<br />
** Lazarus will only provide components based on the LCL.<br />
<br />
==PDA Support==<br />
<br />
Something that currently does not exist is a complete multiplatform solution for PDAs. If we can implement this, Lazarus will become the first multiplatform RAD for PDAs ever created. Some devices work with Java, some work with c++ and Qtopia, some work with their particular APIs, there is no single solution currently that can embrace a large portion of PDAs. Application have to be redone for every PDA or simply just run on one of them (what most people do).<br />
<br />
The LCL implements many things. It is not necessary to implement them all to have a reasonably working Lazarus PDA widgetset. The most important things to be implementeded for PDAs are:<br />
<br />
* TApplication<br />
* TForm<br />
* TScreen<br />
* TCanvas and painting<br />
* Most Events (onClick and OnPaint at least)<br />
* Basic widgets like: TButton, TLabel, TEdit, TMemo.<br />
* Only minimum necessary LCLIntf functions to make TCanvas work. (GetDC, ReleaseDC, BeginPaint, EndPaint and some painting functions)<br />
<br />
Others can be easily implemented by people who need them after those are ready.<br />
<br />
Here is a list of some PDAs and the status of their support on Free Pascal / Lazarus:<br />
<br />
* Windows CE - The compiler already works really well cross compiling for Windows CE. The [[Windows CE Interface]] is under implementation.<br />
* Symbian OS - Possible for their ARM devices. Requires first adding a new Runtime Library for this OS to the Compiler. This OS has it's own API. There are open source projects for python and c to work on Symbian OS, so Free Pascal should work as well when a RTL is written.<br />
* Qtopia - For Zaurus and other linux-based PDAs. This is much easier now that basic Qt4 widgetset has being implemented, because Qtopia is very similar to Qt4. Some magick on the bindings is expected to make the same widgetset code to run for both Qtopia and Qt4.<br />
* Java - Some handheld devices, specially phones, only support java bytecode. May seam a little odd, but there is a Pascal Compiler capable of compiling the source into a jar and then into bytecode. It's name is Midlet Pascal http://www.midletpascal.com/ It may be possible to develop a similar technology that adds a java bytecode target for Free Pascal. Some people already start porting midletpascal to delphi http://forum.boolean.name/attachment.php?attachmentid=7975&d=1255392966, follow instructions on http://www.pascalgamedevelopment.com/forum/index.php?topic=5466.0 to access it.<br />
* Palm OS - PalmOS 5 Garnet support requires that first the 68k compiler is working (runs on ARM processor with a kind of emulation) and then a RTL for palmos needs to be written. Only Free Pascal 1.0 supports 68k, this wasn't updated and the new compiler 2.0 doesn't support it yet (work in progress by [[fpc:User:Chain-Q]]), so will be a problem.<br />
<br />
PalmOS 6 Cobalt is fully arm, so it only requires a rtl, but it has zero devices working on it currently and won't be on the market until 2007 at least.<br />
<br />
Other compilers that support this target: [http://www.ppcompiler.org Pascal & Palm Compiler] and [http://hspascal.fihl.net/ HsPascal]. Unfortunately those compilers are not open source, so we can't use their code, we need to implement PalmOS RTL from zero.<br />
<br />
==More Interfaces==<br />
* Cocoa - <s>Requires that first OpenSTEP bindings are created for Free Pascal.</s> Cocoa interface support has been started; see [[Cocoa Interface]]<br />
* BeAPI - interface for Haiku, ZetaOS and BeOS. There is no powerful RAD on this OS.<br />
** Bindings to the BeAPI has been started - though not part of the Lazarus project. Have a look at SourceForge [http://befpc.sourceforge.net/ befpc] project.<br />
* [http://www.libsdl.org SDL] - something like what was done in [http://www.kanzelsberger.com/pixel/ Pixel Image Editor].<br />
* MacApp 2.0 - For 68k-based Mac computers. MacApp was Apple Computer's primary object oriented application framework for the Mac OS for much of the 1990s. First released in 1985, it is arguably the first such system to be widely used, notably on a microcomputer platform. Microsoft's MFC and Borland's OWL were both based directly on MacApp concepts. This framework was completely written on Object Pascal, so it should integrate really nicely with Free Pascal and Lazarus. When Apple moved to PowerPC it also dropped Object Pascal support, but that's another story. A emulator for 68k-Mac can be easely set up with [http://basilisk.cebix.net/ BasiliskII]. There is also a project called MacApp2PPC that upgraded MacApp pascal code to run on Power PCs. <br />
* OS/2 native - Free Pascal works well with OS/2, so this should be quite possible.<br />
* <s>Solaris - OpenSolaris versions exist and it's quite similar to Linux so why not ?</s> For information on the Solaris port of Lazarus, see: [[Lazarus on Solaris]]<br />
* Web Interface - Application compiles to an embedded HTTP Server who serves forms in ajax pages (or compiles it to an Apache Module), like Intraweb in Delphi. Discussion in http://www.lazarus.freepascal.org/index.php?name=PNphpBB2&file=viewtopic&t=2489<br />
* Already implemented: <s>[http://fpgui.sourceforge.net/ fpGUI] - A widget set written in Free Pascal without any large library requirements. fpGUI talks directly to the underlying graphics library and is very easy to port to new platforms. Currently it supports Linux, ARM-Linux, FreeBSD, Windows and WinCE.</s> - Under development here: [[fpGUI Interface]]<br />
<br />
=== improved EventQueue ===<br />
* [[Lazarus improved Event Queue]]<br />
<br />
=== Lua ===<br />
* Support for Lua interfacing. (Binary modules?) <br />
** What is Lua interfacing? Is it a graphical widgetset? What is the difference between what you want and is supplied by the lua units of fpc: http://svn.freepascal.org/svn/fpc/trunk/packages/lua/<br />
** Perhaps the poster wanted to use the Lua scripting language to access the LCL widgetset. Had a quick look at the FPC lua package mentioned above: no readme, no test, no demo, so not easy to see what that package does/can do. Perhaps it can be used as-is to do what the poster wants; in that case, some additional samples/documentation may be handy. BigChimp, September 2012<br />
<br />
=Visual Improvements=<br />
<br />
==An idea for a splash screen==<br />
[[Image: splash_logo2_.png]]<br />
<br />
The font for "write once..." is DejaVue Serif Condensed, for "Lazarus" is Phantom, and for "object pascal" is Tahoma.<br />
<br />
If you want to change the splash logo on Windows, in your main Lazarus installation folder find "images" folder and there find "splash_logo.bat". Then edit and run it or replace "splash_logo.png" and run "splash_logo.bat".<br />
=== critique ===<br />
* as if people's desktops are not already cluttered to the max... not desirable<br />
<br />
=FPC=<br />
==Per-type Byte Alignment==<br />
A means to align variables and records in a unit is already possible with compiler directives, but is somewhat messy and might cause conflicts in some situations. What I propose is an addition to the Free Pascal syntax that forces all variables of a defined type to be aligned to a particular boundary. e.g.<br />
<br />
<syntaxhighlight><br />
type<br />
AlignedDouble = Double align 16;<br />
<br />
type<br />
TVector4f = packed record<br />
X, Y, Z, W: Single;<br />
end align 16;<br />
<br />
type<br />
TVector4fArray = array of TVector4f align 32;<br />
{ tighter restrictions than TVector4f, so it's okay. Note that this should probably align Var[0] to a 32-byte boundary, not necessarily Var as a whole }<br />
</syntaxhighlight><br />
Such aligned types are useful and even necessary for when working with SSE and AVX, where significant speed gains can be achieved with aligned data (and some operations require it).<br />
<br />
Apparently Delphi supports something like this already, but it isn't well-documented.<br />
===Nuances===<br />
* The exact syntax.<br />
* Cross-platform support. Do all platforms support memory alignment?<br />
* Exact error messages or behaviour if you specify a non-power of 2 alignment.<br />
* What happens if you try to typecast an unaligned variable to an aligned type? (Aligned to unaligned should be fine)<br />
* What happens if you try to typecast a pointer to an unaligned type to a pointer to an aligned type?<br />
* What happens if you, say, declare a type aligned to 16 bytes, and then declare another type that is equal to it but is only aligned to 8 bytes?<br />
* What happens if you, say, declare a type aligned to 16 bytes, then use it as a field in a record type, aligned or otherwise?<br />
[[User:CuriousKit|CuriousKit]] ([[User talk:CuriousKit|talk]]) 18:28, 5 December 2017 (CET)<br />
<br />
=="vectorcall;" modifier for Win32 and Win64==<br />
This function modifier is the only unique modifier for Win64 (although it can be used in Win32 too), introduced by Microsoft at the behest of game developers who wish to reduce the overhead of passing vectors and the like into subroutines. The basic details are the same as the regular Win64 calling convention, but attempt to vectorise certain record types and pass them in their entirety through a single XMM register (something which is already possible in Linux64 sometimes). Details can be found here: https://msdn.microsoft.com/en-us/library/dn375768.aspx<br />
<br />
This may require the byte alignment feature described above.<br />
===Nuances===<br />
* What happens if it is used on a platform other than Win32 or Win64? Does a compiler error occur or is it ignored with a warning?<br />
[[User:CuriousKit|CuriousKit]] ([[User talk:CuriousKit|talk]]) 23:04, 5 December 2017 (CET)<br />
<br />
* As an example of prior art I think Vector Pascal[https://sourceforge.net/projects/vectorpascalcom/] is noteworthy. [[User:MarkMLl|MarkMLl]] ([[User talk:MarkMLl|talk]]) 09:12, 6 December 2017 (CET)<br />
=="default"-value in a proc or function call ==<br />
* There is a limitation in the freepascal-Syntax where you can not depend on the default-parameter lefthand from an explicit parameter. I suggest a possibility where you can say "default" in a function-call, and set other parameters at the same time.<br />
<br />
<br />
<syntaxhighlight><br />
program DefaultParameter;<br />
<br />
{$mode objfpc}{$H+}<br />
<br />
type<br />
Pilots = (Charles, Amelia, Belly, Louis);<br />
<br />
procedure Fly(Pilot: Pilots = Belly; Copilot: Pilots = Charles);<br />
begin<br />
if (Pilot=Copilot) then<br />
halt(1);<br />
end;<br />
<br />
begin<br />
Fly; // we fly with Belly+Charles<br />
Fly(); // we fly with Belly+Charles<br />
Fly(Amelia); // we fly with Amelia+Charles<br />
Fly(Louis, Belly); <br />
<br />
// The following "default" is my Feature Idea<br />
// │<br />
// v<br />
Fly(default, Amelia); // we fly with Belly+Amelia<br />
end. <br />
</syntaxhighlight><br />
===Critique===<br />
*If such a feature should exist, wouldn't it be more straightforward to simply not specify anything before the comma? (i.e. "Fly(, Amelia);") [[User:CuriousKit|CuriousKit]] ([[User talk:CuriousKit|talk]]) 14:50, 7 December 2017 (CET)<br />
<br />
=Other=<br />
==Fixes branch releases==<br />
Already done: <s>Currently we only have snapshots of the fixes branch, and it would be nice to also have them as releases. To have releases, those builds would have to be tested by someone, so I volunteer for that. What is needed is a testing checklist, and the start of it can be found on my page, [[User:Arny]]. Any further ideas are welcome!</s><br />
<br />
* This is already done and maintained for v0.9.28 onwards of Lazarus. Downloads of ''fixes'' releases are available on SourceForge or at [[git_mirrors|GitHub]]. --[[User:Ggeldenhuys|Ggeldenhuys]] 16:03, 16 November 2009 (CET)<br />
<br />
==See Also==<br />
* [[Bounties]] - A way to make sure your feature idea is implemented.<br />
* [[How do I create a bug report]] general information on submitting bugs, what should be covered in a bug report, and using the bug tracker. <br />
* [[Tips on writing bug reports]] detailed information on what should be covered in a bug report. <br />
* [[Database bug reporting]] Specific info and sample programs for database bugs <br />
* [[Moderating the bug tracker]] <br />
<br />
<br />
[[Category:Lazarus]]<br />
[[Category:Proposals]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Current_conversion_projects&diff=111022Current conversion projects2017-07-18T09:04:19Z<p>Arabidopsis: /* Other applications, libraries and components */</p>
<hr />
<div>{{Current Conversion Projects}}<br />
<br />
<br />
This page contains a list of applications and components, that are currently being converted. If the conversion has been finished (or before if you want more user feedback), the components can be moved to [[Components and Code examples]] and the applications to [[Projects using Lazarus]]. If a description page has been made, the applications or components can be offered for download at the [http://sourceforge.net/project/showfiles.php?group_id=92177 sourceforge files area].<br />
==Applications==<br />
None currently.<br />
<br />
==Components==<br />
===Large Display Components===<br />
Almost finished:<br />
* TLCD99<br />
* TLCDLabel<br />
* TAnalogueclock<br />
Everything compiles for SGraph 2.4 but the license for it restricts redistribution of modified source code. The author has been contacted in the hopes that this can be changed.<br />
<br />
I've also converted a small trend recorder variant of Mark Dodson's original but I'm thinking about rewriting it. If anyone is interested in any of these components, let me know. - [[User:VlxAdmin|VlxAdmin]]<br />
<br />
===Indy===<br />
[http://www.indyproject.org/ Internet Direct (Indy)] is an open source TCP/IP socket component suite comprised of popular Internet protocols. For more info see [http://indy4lazarus.sourceforge.net/ indy4lazarus].<br />
<br />
Newer attempts are done by Marco van de Voort. For more (status) info see [[Indy with Lazarus]]<br />
<br />
Current snapshots (for die hards only) are at <br />
[http://www.stack.nl/~marcov/indy9.zip Indy9] and<br />
[http://www.stack.nl/~marcov/Indy10FPC.zip Indy10]<br />
<br />
===FormStorage===<br />
[http://sourceforge.net/project/showfiles.php?group_id=92177&package_id=98986 FormStorage] <br />
is a component to save all selected properties of a form in an xml file.<br />
<br />
===PowerPDF for Lazarus===<br />
[http://www.est.hi-ho.ne.jp/takeshi_kanno/powerpdf/index.html Original PowerPDF site]<br />
PowerPdf is a LCL suite of components to create PDF documents visually. With this components you can design PDF documents easily on Lazarus IDE.<br />
Based in PowerPDF version 0.9, status is 95% finished. -[[User:Jesusrmx|jesusrmx]]<br />
<br />
[[User:Chtk|Chtk]] also started a port of PowerPdf for Lazarus. The result of this effort has been merged with the port done by jesusrmx. A package, which should have all the functionality of the Delphi version, is availabe [http://iquad.nl/files/powerpdf/ here].<br />
<br />
[[User:Xno|Xno]] have port some example of PowerPdf to Lazarus. This code is available [http://xoomer.virgilio.it/xno/xnocbt.html here].<br />
<br />
===tiOPF GUI controls===<br />
[[User:Forest|Bogusław Brandys]] started a port of tiOPF Persistent Aware ([http://tiopf.sourceforge.net/ TechInsite tiOPF site]) GUI controls for Lazarus.<br />
At current stage it simply compile and install into IDE.<br />
Any help is appreciated especially deeper knowledge about components creation for Lazarus.<br />
<br />
TODO:<br />
* remove all message handlers from components ,replace with appropriate anchoring and sizing(controls look ugly now)<br />
* fix problems with AV when deleting subcontrols (tiOPF GUI controls are composite)<br />
* fix problems with tiLVTreeView/tiLVListView<br />
<br />
===TurboPower FlashFiler===<br />
Converted for Windows target. [[FlashFiler]]<br />
<br />
==Libraries==<br />
===dxGetText===<br />
[[DxGetText | Lazarus dxGetText]] is a conversion by [http://sourceforge.net/users/golivier/ Olivier Guilbaud] of the [http://dybdahl.dk/dxgettext/ dxGetText project]. From the dxGetText website: "Initially, this project used a Windows port of the GNU gettext library, but has made it much further and today it is a complete reimplementation of the GNU gettext library with many enhancements".<br />
<br />
===GraphicEx===<br />
The fantastic GraphicEx package from http://www.delphi-gems.com/ has been adapted and enhanced by theo.<br />
See http://www.lazarus.freepascal.org/index.php?name=PNphpBB2&file=viewtopic&p=17635.<br />
<br />
===Graphics32===<br />
Graphics32 is a graphics library for Delphi and Kylix/CLX. Optimized for 32-bit pixel formats, it provides fast operations with pixels and graphic primitives. In most cases Graphics32 considerably outperforms the standard TBitmap/TCanvas methods.<br />
<br />
A team started the port of this library to Free Pascal and Lazarus. The lcl-win32 port is almost complete. The lcl-carbon port is about 50% finished.<br />
<br />
Documentation for this library can be found here: [http://graphics32.org/documentation/Docs/_Body.htm]<br />
<br />
==Requested Components==<br />
===devphp===<br />
[http://sourceforge.net/projects/devphp/ devphp] is an IDE for PHP written in Delphi/Kylix. It's got a lot of nice features and would be very handy to have compiling under Lazarus. The author has run out of time to work on it so it would probably be a good candidate for conversion. [[User:VlxAdmin|Tom]]<br />
<br />
===Usercontrol===<br />
[http://sourceforge.net/projects/usercontrol Usercontrol] Delphi (and Kylix) component package to user and profile management and access control. Supports ADO, DBX, IBX, BDE, IBO, FIBPlus, ZeosDBO, DBISAM, MDO, MyDAC, MySQLDAC and ASTA3. Access control auto-extract TMenu, TActionList and TActionManager items. And MODULE for UIB component.<br />
<br />
===AutoREALM===<br />
AutoREALM ( http://autorealm.sourceforge.net ) is a free (GNU) Fantasy Role-Playing mapper software. It is "developed with Delphi Personal Edition™ (from Borland Inc.) and based on the simple and natural TurboPascal™ language, AutoREALM could be coded as well with Kylix Open Edition™ to run on LINUX platforms.". Well, it doesn't really compile on Linux, but a port to Lazarus that could also compile for Linux, Mac et.c. would be very nice. Currently there is a project to port AutoREALM to C++ and then to Linux, but a Lazarus port would perhaps be easier.<br />
<br />
===Toolbar 2000===<br />
Toolbar 2000 ( http://www.jrsoftware.org/tb2k.php ) is "a set of components for Borland Delphi and C++Builder (4.0 and later) designed to mimic the look and behavior of Office 2000's menus and toolbars.". Available under either a commercial license or the GNU General Public License.<br />
<br />
===Report Manager===<br />
[http://reportman.sourceforge.net Report Manager] Component for creating reports from database with visual editor,band support,conditional printing,evaluating saving to XLS,PDF,HTML.<br />
<br />
=== Open XML ===<br />
[http://www.philo.de/xml/ Open XML] is "a collection of XML and Unicode tools and components for the Delphi/Kylix™ programming language. All packages are freely available including source code."<br />
<br />
===Other applications, libraries and components===<br />
<br />
'''Add an application, library or component that you need here'''<br />
----<br />
Existing TDBLookupComboBox, but enhanced by a IsFiltered property ([https://www.drupal.org/files/project-images/select2element_screen.jpg Screenshot example]). If true, the control should reduce its list of visible (and hence selectable) values in the dropdown list by filtering the DataField by the current DBLookupComboBox while editing. This means, onChange (resulting in DBLookupComboBox.Text=someString) automatically reduces the list to 'SELECT lookup_field FROM lookup_table WHERE lookup_field LIKE %'+someString+'%'. This would greatly enhance the usability of Lazarus made database applications.<br />
Similar projects "elsewhere": [https://www.freelancer.com/projects/Delphi/Custom-Delphi-TDBLookupComboBox/] [https://www.devexpress.com/Support/Center/Question/Details/B196085/filtering-dataset-of-tcxdblookupcombobox] [https://www.drupal.org/sandbox/jauzah/1748434]<br />
----<br />
<br />
<s>Support for Paradox and Access databasing (ADO, DAO or ODBC) in at least a Win32 environment. A package named KADao implements this and is free in Delphi, maybe someone can translate this. If databasing is already implemented, maybe a way for new users to find it???[[User:Micdutoit]]</s><br />
:Paradox dataset is supplied with Lazarus. MS Access can be accessed via [[ODBCConn]] supplied with Lazarus. --[[User:BigChimp|BigChimp]] 16:43, 23 October 2014 (CEST)<br />
<br />
----<br />
I wish '''JCL and JVCL''' ported to lazarus. Also I need some sort of components like [http://www.devexpress.com/ Developer Express (c)] to completely leave Delphi and get Lazarus. I need the cxLayoutControl and all related components. Do you know any packages that are like they?<br />
----<br />
The '''MUTIS''' full text search engine project is looking for help to provide a multi-plataform layer to cross-compiling to .NET (current) Win32 and Linux. I think lazarus is a better target than Kilyk. I have a start but need help to get rid fo .NET specific things.<br />
<br />
The project is at http://sourceforge.net/projects/mutis and the mailing list http://groups.google.com.co/group/mutis-developers?lnk=li<br />
<br />
MUTIS is a search and indexing engine based in Lucene. Is done at 80% at API 1.4 level. I think is great have this tech on Delphi and make the project the first all native, all multiplataform, one language, in their class.<br />
----<br />
I wish '''OpenBSP''' (part of GLScene) to be ported. The project of porting GLScene to Lazarus ([[GLScene]]) seems not to include the also provided OpenBSP. -- [[User:BrainChemistry]], 14 Feb 2008<br />
:* It is not mentioned on the wiki page but the code is included in the repo. However AFAIK nobody touched that code since it was put into that repo. (more details on [[User talk:BrainChemistry|your user talk page]]). regards --[[User:Crossbuilder|Crossbuilder]] 12:41, 16 February 2008 (CET)<br />
----<br />
'''Inno Unpacker''' http://sourceforge.net/projects/innounp/ - is the only known tool to extract Inno installers. It is highly desired to get ported version for automatic build of updates [http://www.wesnoth.org/forum/viewtopic.php?p=284681#284681 for Wesnoth]. --[[User:Skipass|Skipass]] 12:14, 2 March 2008 (CET)<br />
----<br />
'''DevExpress''' components are very big and very good. It would be nice to be translated or if there is any other substitution for them. I already have project heavily involved this component and substituting is not my first option. Milan.<br />
----<br />
[http://en.wikipedia.org/wiki/InnoSetup '''Inno Setup'''] is a tool used to create Lazarus installers for Windows. If Inno Setup is ported to FPC, the whole Lazarus package can be cross-compiled on Linux box. User cross-platform applications can benefit from this too. There is also thread in official [http://news.jrsoftware.org/read/article.php?id=19240&group=jrsoftware.innosetup.code#19240 jrsoftware.innosetup.code] newsgroup about the same topic.<br />
<br />
== Abandoned ==<br />
These conversions were attempted but have been abandoned or stalled:<br />
<br />
===osFinancials===<br />
<br />
The port of this open source project will not be easy, but Rome was not built in one day.<br />
The new version does allow interacting with the database through the SQL db components.<br />
I have created an example to create a plugin for osFinancials. I had some problems with the new components, but I am sure all this will disappear with time and one day I can fully compile the project in Lazarus. I do have a need for the memdataset to be able to mimic the clientdataset.<br />
This will need an XML parser (I am thinking of TJanXmlTree from Jan Verhoeven) and the dataset will need to support blobdata. I will try to see if i can implement this and use the component in Delphi and Lazarus. I will use this component to write the external links to PHP websites (like the osCommerce plugin and the new one I am making for V-Tiger). I use Clientdata set just as a memdataset in the code but I also need the part where the XML datapacket is translated to the dataset and the ability to save to this format.<br />
<br />
[[User:Delphidreamer|Delphidreamer]]<br />
<br />
{{Warning|osFinancials code uses old Delphi commercial visual components that are no longer available. Porting osFinancials itself is hard because of this.}}<br />
<br />
Update 2014: meanwhile, all attempts at converting seem to have halted; there seems to be effort to migrate from Delphi-specific components. It looks like this effort has been abandoned, making osFinancials open source but fairly useless for development unless you happen to have the required Delphi version and components. <nowiki>Insert non-formatted text here</nowiki><br />
[[Category:Promotion]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Current_conversion_projects&diff=111021Current conversion projects2017-07-18T08:51:38Z<p>Arabidopsis: /* Other applications, libraries and components */</p>
<hr />
<div>{{Current Conversion Projects}}<br />
<br />
<br />
This page contains a list of applications and components, that are currently being converted. If the conversion has been finished (or before if you want more user feedback), the components can be moved to [[Components and Code examples]] and the applications to [[Projects using Lazarus]]. If a description page has been made, the applications or components can be offered for download at the [http://sourceforge.net/project/showfiles.php?group_id=92177 sourceforge files area].<br />
==Applications==<br />
None currently.<br />
<br />
==Components==<br />
===Large Display Components===<br />
Almost finished:<br />
* TLCD99<br />
* TLCDLabel<br />
* TAnalogueclock<br />
Everything compiles for SGraph 2.4 but the license for it restricts redistribution of modified source code. The author has been contacted in the hopes that this can be changed.<br />
<br />
I've also converted a small trend recorder variant of Mark Dodson's original but I'm thinking about rewriting it. If anyone is interested in any of these components, let me know. - [[User:VlxAdmin|VlxAdmin]]<br />
<br />
===Indy===<br />
[http://www.indyproject.org/ Internet Direct (Indy)] is an open source TCP/IP socket component suite comprised of popular Internet protocols. For more info see [http://indy4lazarus.sourceforge.net/ indy4lazarus].<br />
<br />
Newer attempts are done by Marco van de Voort. For more (status) info see [[Indy with Lazarus]]<br />
<br />
Current snapshots (for die hards only) are at <br />
[http://www.stack.nl/~marcov/indy9.zip Indy9] and<br />
[http://www.stack.nl/~marcov/Indy10FPC.zip Indy10]<br />
<br />
===FormStorage===<br />
[http://sourceforge.net/project/showfiles.php?group_id=92177&package_id=98986 FormStorage] <br />
is a component to save all selected properties of a form in an xml file.<br />
<br />
===PowerPDF for Lazarus===<br />
[http://www.est.hi-ho.ne.jp/takeshi_kanno/powerpdf/index.html Original PowerPDF site]<br />
PowerPdf is a LCL suite of components to create PDF documents visually. With this components you can design PDF documents easily on Lazarus IDE.<br />
Based in PowerPDF version 0.9, status is 95% finished. -[[User:Jesusrmx|jesusrmx]]<br />
<br />
[[User:Chtk|Chtk]] also started a port of PowerPdf for Lazarus. The result of this effort has been merged with the port done by jesusrmx. A package, which should have all the functionality of the Delphi version, is availabe [http://iquad.nl/files/powerpdf/ here].<br />
<br />
[[User:Xno|Xno]] have port some example of PowerPdf to Lazarus. This code is available [http://xoomer.virgilio.it/xno/xnocbt.html here].<br />
<br />
===tiOPF GUI controls===<br />
[[User:Forest|Bogusław Brandys]] started a port of tiOPF Persistent Aware ([http://tiopf.sourceforge.net/ TechInsite tiOPF site]) GUI controls for Lazarus.<br />
At current stage it simply compile and install into IDE.<br />
Any help is appreciated especially deeper knowledge about components creation for Lazarus.<br />
<br />
TODO:<br />
* remove all message handlers from components ,replace with appropriate anchoring and sizing(controls look ugly now)<br />
* fix problems with AV when deleting subcontrols (tiOPF GUI controls are composite)<br />
* fix problems with tiLVTreeView/tiLVListView<br />
<br />
===TurboPower FlashFiler===<br />
Converted for Windows target. [[FlashFiler]]<br />
<br />
==Libraries==<br />
===dxGetText===<br />
[[DxGetText | Lazarus dxGetText]] is a conversion by [http://sourceforge.net/users/golivier/ Olivier Guilbaud] of the [http://dybdahl.dk/dxgettext/ dxGetText project]. From the dxGetText website: "Initially, this project used a Windows port of the GNU gettext library, but has made it much further and today it is a complete reimplementation of the GNU gettext library with many enhancements".<br />
<br />
===GraphicEx===<br />
The fantastic GraphicEx package from http://www.delphi-gems.com/ has been adapted and enhanced by theo.<br />
See http://www.lazarus.freepascal.org/index.php?name=PNphpBB2&file=viewtopic&p=17635.<br />
<br />
===Graphics32===<br />
Graphics32 is a graphics library for Delphi and Kylix/CLX. Optimized for 32-bit pixel formats, it provides fast operations with pixels and graphic primitives. In most cases Graphics32 considerably outperforms the standard TBitmap/TCanvas methods.<br />
<br />
A team started the port of this library to Free Pascal and Lazarus. The lcl-win32 port is almost complete. The lcl-carbon port is about 50% finished.<br />
<br />
Documentation for this library can be found here: [http://graphics32.org/documentation/Docs/_Body.htm]<br />
<br />
==Requested Components==<br />
===devphp===<br />
[http://sourceforge.net/projects/devphp/ devphp] is an IDE for PHP written in Delphi/Kylix. It's got a lot of nice features and would be very handy to have compiling under Lazarus. The author has run out of time to work on it so it would probably be a good candidate for conversion. [[User:VlxAdmin|Tom]]<br />
<br />
===Usercontrol===<br />
[http://sourceforge.net/projects/usercontrol Usercontrol] Delphi (and Kylix) component package to user and profile management and access control. Supports ADO, DBX, IBX, BDE, IBO, FIBPlus, ZeosDBO, DBISAM, MDO, MyDAC, MySQLDAC and ASTA3. Access control auto-extract TMenu, TActionList and TActionManager items. And MODULE for UIB component.<br />
<br />
===AutoREALM===<br />
AutoREALM ( http://autorealm.sourceforge.net ) is a free (GNU) Fantasy Role-Playing mapper software. It is "developed with Delphi Personal Edition™ (from Borland Inc.) and based on the simple and natural TurboPascal™ language, AutoREALM could be coded as well with Kylix Open Edition™ to run on LINUX platforms.". Well, it doesn't really compile on Linux, but a port to Lazarus that could also compile for Linux, Mac et.c. would be very nice. Currently there is a project to port AutoREALM to C++ and then to Linux, but a Lazarus port would perhaps be easier.<br />
<br />
===Toolbar 2000===<br />
Toolbar 2000 ( http://www.jrsoftware.org/tb2k.php ) is "a set of components for Borland Delphi and C++Builder (4.0 and later) designed to mimic the look and behavior of Office 2000's menus and toolbars.". Available under either a commercial license or the GNU General Public License.<br />
<br />
===Report Manager===<br />
[http://reportman.sourceforge.net Report Manager] Component for creating reports from database with visual editor,band support,conditional printing,evaluating saving to XLS,PDF,HTML.<br />
<br />
=== Open XML ===<br />
[http://www.philo.de/xml/ Open XML] is "a collection of XML and Unicode tools and components for the Delphi/Kylix™ programming language. All packages are freely available including source code."<br />
<br />
===Other applications, libraries and components===<br />
<br />
'''Add an application, library or component that you need here'''<br />
----<br />
Existing TDBLookupComboBox, but enhanced by a IsFiltered property. If true, the control should reduce its list of visible (and hence selectable) values in the dropdown list by filtering the DataField by the current DBLookupComboBox while editing. This means, onChange (resulting in DBLookupComboBox.Text=someString) automatically reduces the list to 'SELECT lookup_field FROM lookup_table WHERE lookup_field LIKE %'+someString+'%'. This would greatly enhance the usability of Lazarus made database applications.<br />
Similar projects elsewhere: [https://www.freelancer.com/projects/Delphi/Custom-Delphi-TDBLookupComboBox/]<br />
----<br />
<br />
<s>Support for Paradox and Access databasing (ADO, DAO or ODBC) in at least a Win32 environment. A package named KADao implements this and is free in Delphi, maybe someone can translate this. If databasing is already implemented, maybe a way for new users to find it???[[User:Micdutoit]]</s><br />
:Paradox dataset is supplied with Lazarus. MS Access can be accessed via [[ODBCConn]] supplied with Lazarus. --[[User:BigChimp|BigChimp]] 16:43, 23 October 2014 (CEST)<br />
<br />
----<br />
I wish '''JCL and JVCL''' ported to lazarus. Also I need some sort of components like [http://www.devexpress.com/ Developer Express (c)] to completely leave Delphi and get Lazarus. I need the cxLayoutControl and all related components. Do you know any packages that are like they?<br />
----<br />
The '''MUTIS''' full text search engine project is looking for help to provide a multi-plataform layer to cross-compiling to .NET (current) Win32 and Linux. I think lazarus is a better target than Kilyk. I have a start but need help to get rid fo .NET specific things.<br />
<br />
The project is at http://sourceforge.net/projects/mutis and the mailing list http://groups.google.com.co/group/mutis-developers?lnk=li<br />
<br />
MUTIS is a search and indexing engine based in Lucene. Is done at 80% at API 1.4 level. I think is great have this tech on Delphi and make the project the first all native, all multiplataform, one language, in their class.<br />
----<br />
I wish '''OpenBSP''' (part of GLScene) to be ported. The project of porting GLScene to Lazarus ([[GLScene]]) seems not to include the also provided OpenBSP. -- [[User:BrainChemistry]], 14 Feb 2008<br />
:* It is not mentioned on the wiki page but the code is included in the repo. However AFAIK nobody touched that code since it was put into that repo. (more details on [[User talk:BrainChemistry|your user talk page]]). regards --[[User:Crossbuilder|Crossbuilder]] 12:41, 16 February 2008 (CET)<br />
----<br />
'''Inno Unpacker''' http://sourceforge.net/projects/innounp/ - is the only known tool to extract Inno installers. It is highly desired to get ported version for automatic build of updates [http://www.wesnoth.org/forum/viewtopic.php?p=284681#284681 for Wesnoth]. --[[User:Skipass|Skipass]] 12:14, 2 March 2008 (CET)<br />
----<br />
'''DevExpress''' components are very big and very good. It would be nice to be translated or if there is any other substitution for them. I already have project heavily involved this component and substituting is not my first option. Milan.<br />
----<br />
[http://en.wikipedia.org/wiki/InnoSetup '''Inno Setup'''] is a tool used to create Lazarus installers for Windows. If Inno Setup is ported to FPC, the whole Lazarus package can be cross-compiled on Linux box. User cross-platform applications can benefit from this too. There is also thread in official [http://news.jrsoftware.org/read/article.php?id=19240&group=jrsoftware.innosetup.code#19240 jrsoftware.innosetup.code] newsgroup about the same topic.<br />
<br />
== Abandoned ==<br />
These conversions were attempted but have been abandoned or stalled:<br />
<br />
===osFinancials===<br />
<br />
The port of this open source project will not be easy, but Rome was not built in one day.<br />
The new version does allow interacting with the database through the SQL db components.<br />
I have created an example to create a plugin for osFinancials. I had some problems with the new components, but I am sure all this will disappear with time and one day I can fully compile the project in Lazarus. I do have a need for the memdataset to be able to mimic the clientdataset.<br />
This will need an XML parser (I am thinking of TJanXmlTree from Jan Verhoeven) and the dataset will need to support blobdata. I will try to see if i can implement this and use the component in Delphi and Lazarus. I will use this component to write the external links to PHP websites (like the osCommerce plugin and the new one I am making for V-Tiger). I use Clientdata set just as a memdataset in the code but I also need the part where the XML datapacket is translated to the dataset and the ability to save to this format.<br />
<br />
[[User:Delphidreamer|Delphidreamer]]<br />
<br />
{{Warning|osFinancials code uses old Delphi commercial visual components that are no longer available. Porting osFinancials itself is hard because of this.}}<br />
<br />
Update 2014: meanwhile, all attempts at converting seem to have halted; there seems to be effort to migrate from Delphi-specific components. It looks like this effort has been abandoned, making osFinancials open source but fairly useless for development unless you happen to have the required Delphi version and components. <nowiki>Insert non-formatted text here</nowiki><br />
[[Category:Promotion]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Current_conversion_projects&diff=111020Current conversion projects2017-07-18T08:42:37Z<p>Arabidopsis: /* Other applications, libraries and components */</p>
<hr />
<div>{{Current Conversion Projects}}<br />
<br />
<br />
This page contains a list of applications and components, that are currently being converted. If the conversion has been finished (or before if you want more user feedback), the components can be moved to [[Components and Code examples]] and the applications to [[Projects using Lazarus]]. If a description page has been made, the applications or components can be offered for download at the [http://sourceforge.net/project/showfiles.php?group_id=92177 sourceforge files area].<br />
==Applications==<br />
None currently.<br />
<br />
==Components==<br />
===Large Display Components===<br />
Almost finished:<br />
* TLCD99<br />
* TLCDLabel<br />
* TAnalogueclock<br />
Everything compiles for SGraph 2.4 but the license for it restricts redistribution of modified source code. The author has been contacted in the hopes that this can be changed.<br />
<br />
I've also converted a small trend recorder variant of Mark Dodson's original but I'm thinking about rewriting it. If anyone is interested in any of these components, let me know. - [[User:VlxAdmin|VlxAdmin]]<br />
<br />
===Indy===<br />
[http://www.indyproject.org/ Internet Direct (Indy)] is an open source TCP/IP socket component suite comprised of popular Internet protocols. For more info see [http://indy4lazarus.sourceforge.net/ indy4lazarus].<br />
<br />
Newer attempts are done by Marco van de Voort. For more (status) info see [[Indy with Lazarus]]<br />
<br />
Current snapshots (for die hards only) are at <br />
[http://www.stack.nl/~marcov/indy9.zip Indy9] and<br />
[http://www.stack.nl/~marcov/Indy10FPC.zip Indy10]<br />
<br />
===FormStorage===<br />
[http://sourceforge.net/project/showfiles.php?group_id=92177&package_id=98986 FormStorage] <br />
is a component to save all selected properties of a form in an xml file.<br />
<br />
===PowerPDF for Lazarus===<br />
[http://www.est.hi-ho.ne.jp/takeshi_kanno/powerpdf/index.html Original PowerPDF site]<br />
PowerPdf is a LCL suite of components to create PDF documents visually. With this components you can design PDF documents easily on Lazarus IDE.<br />
Based in PowerPDF version 0.9, status is 95% finished. -[[User:Jesusrmx|jesusrmx]]<br />
<br />
[[User:Chtk|Chtk]] also started a port of PowerPdf for Lazarus. The result of this effort has been merged with the port done by jesusrmx. A package, which should have all the functionality of the Delphi version, is availabe [http://iquad.nl/files/powerpdf/ here].<br />
<br />
[[User:Xno|Xno]] have port some example of PowerPdf to Lazarus. This code is available [http://xoomer.virgilio.it/xno/xnocbt.html here].<br />
<br />
===tiOPF GUI controls===<br />
[[User:Forest|Bogusław Brandys]] started a port of tiOPF Persistent Aware ([http://tiopf.sourceforge.net/ TechInsite tiOPF site]) GUI controls for Lazarus.<br />
At current stage it simply compile and install into IDE.<br />
Any help is appreciated especially deeper knowledge about components creation for Lazarus.<br />
<br />
TODO:<br />
* remove all message handlers from components ,replace with appropriate anchoring and sizing(controls look ugly now)<br />
* fix problems with AV when deleting subcontrols (tiOPF GUI controls are composite)<br />
* fix problems with tiLVTreeView/tiLVListView<br />
<br />
===TurboPower FlashFiler===<br />
Converted for Windows target. [[FlashFiler]]<br />
<br />
==Libraries==<br />
===dxGetText===<br />
[[DxGetText | Lazarus dxGetText]] is a conversion by [http://sourceforge.net/users/golivier/ Olivier Guilbaud] of the [http://dybdahl.dk/dxgettext/ dxGetText project]. From the dxGetText website: "Initially, this project used a Windows port of the GNU gettext library, but has made it much further and today it is a complete reimplementation of the GNU gettext library with many enhancements".<br />
<br />
===GraphicEx===<br />
The fantastic GraphicEx package from http://www.delphi-gems.com/ has been adapted and enhanced by theo.<br />
See http://www.lazarus.freepascal.org/index.php?name=PNphpBB2&file=viewtopic&p=17635.<br />
<br />
===Graphics32===<br />
Graphics32 is a graphics library for Delphi and Kylix/CLX. Optimized for 32-bit pixel formats, it provides fast operations with pixels and graphic primitives. In most cases Graphics32 considerably outperforms the standard TBitmap/TCanvas methods.<br />
<br />
A team started the port of this library to Free Pascal and Lazarus. The lcl-win32 port is almost complete. The lcl-carbon port is about 50% finished.<br />
<br />
Documentation for this library can be found here: [http://graphics32.org/documentation/Docs/_Body.htm]<br />
<br />
==Requested Components==<br />
===devphp===<br />
[http://sourceforge.net/projects/devphp/ devphp] is an IDE for PHP written in Delphi/Kylix. It's got a lot of nice features and would be very handy to have compiling under Lazarus. The author has run out of time to work on it so it would probably be a good candidate for conversion. [[User:VlxAdmin|Tom]]<br />
<br />
===Usercontrol===<br />
[http://sourceforge.net/projects/usercontrol Usercontrol] Delphi (and Kylix) component package to user and profile management and access control. Supports ADO, DBX, IBX, BDE, IBO, FIBPlus, ZeosDBO, DBISAM, MDO, MyDAC, MySQLDAC and ASTA3. Access control auto-extract TMenu, TActionList and TActionManager items. And MODULE for UIB component.<br />
<br />
===AutoREALM===<br />
AutoREALM ( http://autorealm.sourceforge.net ) is a free (GNU) Fantasy Role-Playing mapper software. It is "developed with Delphi Personal Edition™ (from Borland Inc.) and based on the simple and natural TurboPascal™ language, AutoREALM could be coded as well with Kylix Open Edition™ to run on LINUX platforms.". Well, it doesn't really compile on Linux, but a port to Lazarus that could also compile for Linux, Mac et.c. would be very nice. Currently there is a project to port AutoREALM to C++ and then to Linux, but a Lazarus port would perhaps be easier.<br />
<br />
===Toolbar 2000===<br />
Toolbar 2000 ( http://www.jrsoftware.org/tb2k.php ) is "a set of components for Borland Delphi and C++Builder (4.0 and later) designed to mimic the look and behavior of Office 2000's menus and toolbars.". Available under either a commercial license or the GNU General Public License.<br />
<br />
===Report Manager===<br />
[http://reportman.sourceforge.net Report Manager] Component for creating reports from database with visual editor,band support,conditional printing,evaluating saving to XLS,PDF,HTML.<br />
<br />
=== Open XML ===<br />
[http://www.philo.de/xml/ Open XML] is "a collection of XML and Unicode tools and components for the Delphi/Kylix™ programming language. All packages are freely available including source code."<br />
<br />
===Other applications, libraries and components===<br />
<br />
'''Add an application, library or component that you need here'''<br />
----<br />
Existing TDBLookupComboBox, but enhanced by a IsFiltered property. If true, the control should reduce its list of visible (and hence selectable) values in the dropdown list by filtering the DataField by the current DBLookupComboBox while editing. This means, onChange (resulting in DBLookupComboBox.Text=someString) automatically reduces the list to 'SELECT lookup_field FROM lookup_table WHERE lookup_field LIKE %'+someString+'%'. This would greatly enhance the usability of Lazarus made database applications.<br />
----<br />
<br />
<s>Support for Paradox and Access databasing (ADO, DAO or ODBC) in at least a Win32 environment. A package named KADao implements this and is free in Delphi, maybe someone can translate this. If databasing is already implemented, maybe a way for new users to find it???[[User:Micdutoit]]</s><br />
:Paradox dataset is supplied with Lazarus. MS Access can be accessed via [[ODBCConn]] supplied with Lazarus. --[[User:BigChimp|BigChimp]] 16:43, 23 October 2014 (CEST)<br />
<br />
----<br />
I wish '''JCL and JVCL''' ported to lazarus. Also I need some sort of components like [http://www.devexpress.com/ Developer Express (c)] to completely leave Delphi and get Lazarus. I need the cxLayoutControl and all related components. Do you know any packages that are like they?<br />
----<br />
The '''MUTIS''' full text search engine project is looking for help to provide a multi-plataform layer to cross-compiling to .NET (current) Win32 and Linux. I think lazarus is a better target than Kilyk. I have a start but need help to get rid fo .NET specific things.<br />
<br />
The project is at http://sourceforge.net/projects/mutis and the mailing list http://groups.google.com.co/group/mutis-developers?lnk=li<br />
<br />
MUTIS is a search and indexing engine based in Lucene. Is done at 80% at API 1.4 level. I think is great have this tech on Delphi and make the project the first all native, all multiplataform, one language, in their class.<br />
----<br />
I wish '''OpenBSP''' (part of GLScene) to be ported. The project of porting GLScene to Lazarus ([[GLScene]]) seems not to include the also provided OpenBSP. -- [[User:BrainChemistry]], 14 Feb 2008<br />
:* It is not mentioned on the wiki page but the code is included in the repo. However AFAIK nobody touched that code since it was put into that repo. (more details on [[User talk:BrainChemistry|your user talk page]]). regards --[[User:Crossbuilder|Crossbuilder]] 12:41, 16 February 2008 (CET)<br />
----<br />
'''Inno Unpacker''' http://sourceforge.net/projects/innounp/ - is the only known tool to extract Inno installers. It is highly desired to get ported version for automatic build of updates [http://www.wesnoth.org/forum/viewtopic.php?p=284681#284681 for Wesnoth]. --[[User:Skipass|Skipass]] 12:14, 2 March 2008 (CET)<br />
----<br />
'''DevExpress''' components are very big and very good. It would be nice to be translated or if there is any other substitution for them. I already have project heavily involved this component and substituting is not my first option. Milan.<br />
----<br />
[http://en.wikipedia.org/wiki/InnoSetup '''Inno Setup'''] is a tool used to create Lazarus installers for Windows. If Inno Setup is ported to FPC, the whole Lazarus package can be cross-compiled on Linux box. User cross-platform applications can benefit from this too. There is also thread in official [http://news.jrsoftware.org/read/article.php?id=19240&group=jrsoftware.innosetup.code#19240 jrsoftware.innosetup.code] newsgroup about the same topic.<br />
<br />
== Abandoned ==<br />
These conversions were attempted but have been abandoned or stalled:<br />
<br />
===osFinancials===<br />
<br />
The port of this open source project will not be easy, but Rome was not built in one day.<br />
The new version does allow interacting with the database through the SQL db components.<br />
I have created an example to create a plugin for osFinancials. I had some problems with the new components, but I am sure all this will disappear with time and one day I can fully compile the project in Lazarus. I do have a need for the memdataset to be able to mimic the clientdataset.<br />
This will need an XML parser (I am thinking of TJanXmlTree from Jan Verhoeven) and the dataset will need to support blobdata. I will try to see if i can implement this and use the component in Delphi and Lazarus. I will use this component to write the external links to PHP websites (like the osCommerce plugin and the new one I am making for V-Tiger). I use Clientdata set just as a memdataset in the code but I also need the part where the XML datapacket is translated to the dataset and the ability to save to this format.<br />
<br />
[[User:Delphidreamer|Delphidreamer]]<br />
<br />
{{Warning|osFinancials code uses old Delphi commercial visual components that are no longer available. Porting osFinancials itself is hard because of this.}}<br />
<br />
Update 2014: meanwhile, all attempts at converting seem to have halted; there seems to be effort to migrate from Delphi-specific components. It looks like this effort has been abandoned, making osFinancials open source but fairly useless for development unless you happen to have the required Delphi version and components. <nowiki>Insert non-formatted text here</nowiki><br />
[[Category:Promotion]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Current_conversion_projects&diff=111019Current conversion projects2017-07-18T08:37:28Z<p>Arabidopsis: /* Other applications, libraries and components */</p>
<hr />
<div>{{Current Conversion Projects}}<br />
<br />
<br />
This page contains a list of applications and components, that are currently being converted. If the conversion has been finished (or before if you want more user feedback), the components can be moved to [[Components and Code examples]] and the applications to [[Projects using Lazarus]]. If a description page has been made, the applications or components can be offered for download at the [http://sourceforge.net/project/showfiles.php?group_id=92177 sourceforge files area].<br />
==Applications==<br />
None currently.<br />
<br />
==Components==<br />
===Large Display Components===<br />
Almost finished:<br />
* TLCD99<br />
* TLCDLabel<br />
* TAnalogueclock<br />
Everything compiles for SGraph 2.4 but the license for it restricts redistribution of modified source code. The author has been contacted in the hopes that this can be changed.<br />
<br />
I've also converted a small trend recorder variant of Mark Dodson's original but I'm thinking about rewriting it. If anyone is interested in any of these components, let me know. - [[User:VlxAdmin|VlxAdmin]]<br />
<br />
===Indy===<br />
[http://www.indyproject.org/ Internet Direct (Indy)] is an open source TCP/IP socket component suite comprised of popular Internet protocols. For more info see [http://indy4lazarus.sourceforge.net/ indy4lazarus].<br />
<br />
Newer attempts are done by Marco van de Voort. For more (status) info see [[Indy with Lazarus]]<br />
<br />
Current snapshots (for die hards only) are at <br />
[http://www.stack.nl/~marcov/indy9.zip Indy9] and<br />
[http://www.stack.nl/~marcov/Indy10FPC.zip Indy10]<br />
<br />
===FormStorage===<br />
[http://sourceforge.net/project/showfiles.php?group_id=92177&package_id=98986 FormStorage] <br />
is a component to save all selected properties of a form in an xml file.<br />
<br />
===PowerPDF for Lazarus===<br />
[http://www.est.hi-ho.ne.jp/takeshi_kanno/powerpdf/index.html Original PowerPDF site]<br />
PowerPdf is a LCL suite of components to create PDF documents visually. With this components you can design PDF documents easily on Lazarus IDE.<br />
Based in PowerPDF version 0.9, status is 95% finished. -[[User:Jesusrmx|jesusrmx]]<br />
<br />
[[User:Chtk|Chtk]] also started a port of PowerPdf for Lazarus. The result of this effort has been merged with the port done by jesusrmx. A package, which should have all the functionality of the Delphi version, is availabe [http://iquad.nl/files/powerpdf/ here].<br />
<br />
[[User:Xno|Xno]] have port some example of PowerPdf to Lazarus. This code is available [http://xoomer.virgilio.it/xno/xnocbt.html here].<br />
<br />
===tiOPF GUI controls===<br />
[[User:Forest|Bogusław Brandys]] started a port of tiOPF Persistent Aware ([http://tiopf.sourceforge.net/ TechInsite tiOPF site]) GUI controls for Lazarus.<br />
At current stage it simply compile and install into IDE.<br />
Any help is appreciated especially deeper knowledge about components creation for Lazarus.<br />
<br />
TODO:<br />
* remove all message handlers from components ,replace with appropriate anchoring and sizing(controls look ugly now)<br />
* fix problems with AV when deleting subcontrols (tiOPF GUI controls are composite)<br />
* fix problems with tiLVTreeView/tiLVListView<br />
<br />
===TurboPower FlashFiler===<br />
Converted for Windows target. [[FlashFiler]]<br />
<br />
==Libraries==<br />
===dxGetText===<br />
[[DxGetText | Lazarus dxGetText]] is a conversion by [http://sourceforge.net/users/golivier/ Olivier Guilbaud] of the [http://dybdahl.dk/dxgettext/ dxGetText project]. From the dxGetText website: "Initially, this project used a Windows port of the GNU gettext library, but has made it much further and today it is a complete reimplementation of the GNU gettext library with many enhancements".<br />
<br />
===GraphicEx===<br />
The fantastic GraphicEx package from http://www.delphi-gems.com/ has been adapted and enhanced by theo.<br />
See http://www.lazarus.freepascal.org/index.php?name=PNphpBB2&file=viewtopic&p=17635.<br />
<br />
===Graphics32===<br />
Graphics32 is a graphics library for Delphi and Kylix/CLX. Optimized for 32-bit pixel formats, it provides fast operations with pixels and graphic primitives. In most cases Graphics32 considerably outperforms the standard TBitmap/TCanvas methods.<br />
<br />
A team started the port of this library to Free Pascal and Lazarus. The lcl-win32 port is almost complete. The lcl-carbon port is about 50% finished.<br />
<br />
Documentation for this library can be found here: [http://graphics32.org/documentation/Docs/_Body.htm]<br />
<br />
==Requested Components==<br />
===devphp===<br />
[http://sourceforge.net/projects/devphp/ devphp] is an IDE for PHP written in Delphi/Kylix. It's got a lot of nice features and would be very handy to have compiling under Lazarus. The author has run out of time to work on it so it would probably be a good candidate for conversion. [[User:VlxAdmin|Tom]]<br />
<br />
===Usercontrol===<br />
[http://sourceforge.net/projects/usercontrol Usercontrol] Delphi (and Kylix) component package to user and profile management and access control. Supports ADO, DBX, IBX, BDE, IBO, FIBPlus, ZeosDBO, DBISAM, MDO, MyDAC, MySQLDAC and ASTA3. Access control auto-extract TMenu, TActionList and TActionManager items. And MODULE for UIB component.<br />
<br />
===AutoREALM===<br />
AutoREALM ( http://autorealm.sourceforge.net ) is a free (GNU) Fantasy Role-Playing mapper software. It is "developed with Delphi Personal Edition™ (from Borland Inc.) and based on the simple and natural TurboPascal™ language, AutoREALM could be coded as well with Kylix Open Edition™ to run on LINUX platforms.". Well, it doesn't really compile on Linux, but a port to Lazarus that could also compile for Linux, Mac et.c. would be very nice. Currently there is a project to port AutoREALM to C++ and then to Linux, but a Lazarus port would perhaps be easier.<br />
<br />
===Toolbar 2000===<br />
Toolbar 2000 ( http://www.jrsoftware.org/tb2k.php ) is "a set of components for Borland Delphi and C++Builder (4.0 and later) designed to mimic the look and behavior of Office 2000's menus and toolbars.". Available under either a commercial license or the GNU General Public License.<br />
<br />
===Report Manager===<br />
[http://reportman.sourceforge.net Report Manager] Component for creating reports from database with visual editor,band support,conditional printing,evaluating saving to XLS,PDF,HTML.<br />
<br />
=== Open XML ===<br />
[http://www.philo.de/xml/ Open XML] is "a collection of XML and Unicode tools and components for the Delphi/Kylix™ programming language. All packages are freely available including source code."<br />
<br />
===Other applications, libraries and components===<br />
<br />
'''Add an application, library or component that you need here'''<br />
----<br />
Existing TDBLookupComboBox, but enhanced by the ability to reduce the visible (and hence selectable) values in the dropdown list by filtering the DataField by the current DBLookupComboBox while editing. This means, as long as DBLookupComboBox.Text='', the dropdown list is complete, but when DBLookupComboBox.Text=someString, the list is reduced corresponding to 'SELECT lookup_field FROM lookup_table WHERE lookup_field LIKE %'+someString+'%'. This would greatly enhance the usability of Lazarus made database applications.<br />
----<br />
<br />
<s>Support for Paradox and Access databasing (ADO, DAO or ODBC) in at least a Win32 environment. A package named KADao implements this and is free in Delphi, maybe someone can translate this. If databasing is already implemented, maybe a way for new users to find it???[[User:Micdutoit]]</s><br />
:Paradox dataset is supplied with Lazarus. MS Access can be accessed via [[ODBCConn]] supplied with Lazarus. --[[User:BigChimp|BigChimp]] 16:43, 23 October 2014 (CEST)<br />
<br />
----<br />
I wish '''JCL and JVCL''' ported to lazarus. Also I need some sort of components like [http://www.devexpress.com/ Developer Express (c)] to completely leave Delphi and get Lazarus. I need the cxLayoutControl and all related components. Do you know any packages that are like they?<br />
----<br />
The '''MUTIS''' full text search engine project is looking for help to provide a multi-plataform layer to cross-compiling to .NET (current) Win32 and Linux. I think lazarus is a better target than Kilyk. I have a start but need help to get rid fo .NET specific things.<br />
<br />
The project is at http://sourceforge.net/projects/mutis and the mailing list http://groups.google.com.co/group/mutis-developers?lnk=li<br />
<br />
MUTIS is a search and indexing engine based in Lucene. Is done at 80% at API 1.4 level. I think is great have this tech on Delphi and make the project the first all native, all multiplataform, one language, in their class.<br />
----<br />
I wish '''OpenBSP''' (part of GLScene) to be ported. The project of porting GLScene to Lazarus ([[GLScene]]) seems not to include the also provided OpenBSP. -- [[User:BrainChemistry]], 14 Feb 2008<br />
:* It is not mentioned on the wiki page but the code is included in the repo. However AFAIK nobody touched that code since it was put into that repo. (more details on [[User talk:BrainChemistry|your user talk page]]). regards --[[User:Crossbuilder|Crossbuilder]] 12:41, 16 February 2008 (CET)<br />
----<br />
'''Inno Unpacker''' http://sourceforge.net/projects/innounp/ - is the only known tool to extract Inno installers. It is highly desired to get ported version for automatic build of updates [http://www.wesnoth.org/forum/viewtopic.php?p=284681#284681 for Wesnoth]. --[[User:Skipass|Skipass]] 12:14, 2 March 2008 (CET)<br />
----<br />
'''DevExpress''' components are very big and very good. It would be nice to be translated or if there is any other substitution for them. I already have project heavily involved this component and substituting is not my first option. Milan.<br />
----<br />
[http://en.wikipedia.org/wiki/InnoSetup '''Inno Setup'''] is a tool used to create Lazarus installers for Windows. If Inno Setup is ported to FPC, the whole Lazarus package can be cross-compiled on Linux box. User cross-platform applications can benefit from this too. There is also thread in official [http://news.jrsoftware.org/read/article.php?id=19240&group=jrsoftware.innosetup.code#19240 jrsoftware.innosetup.code] newsgroup about the same topic.<br />
<br />
== Abandoned ==<br />
These conversions were attempted but have been abandoned or stalled:<br />
<br />
===osFinancials===<br />
<br />
The port of this open source project will not be easy, but Rome was not built in one day.<br />
The new version does allow interacting with the database through the SQL db components.<br />
I have created an example to create a plugin for osFinancials. I had some problems with the new components, but I am sure all this will disappear with time and one day I can fully compile the project in Lazarus. I do have a need for the memdataset to be able to mimic the clientdataset.<br />
This will need an XML parser (I am thinking of TJanXmlTree from Jan Verhoeven) and the dataset will need to support blobdata. I will try to see if i can implement this and use the component in Delphi and Lazarus. I will use this component to write the external links to PHP websites (like the osCommerce plugin and the new one I am making for V-Tiger). I use Clientdata set just as a memdataset in the code but I also need the part where the XML datapacket is translated to the dataset and the ability to save to this format.<br />
<br />
[[User:Delphidreamer|Delphidreamer]]<br />
<br />
{{Warning|osFinancials code uses old Delphi commercial visual components that are no longer available. Porting osFinancials itself is hard because of this.}}<br />
<br />
Update 2014: meanwhile, all attempts at converting seem to have halted; there seems to be effort to migrate from Delphi-specific components. It looks like this effort has been abandoned, making osFinancials open source but fairly useless for development unless you happen to have the required Delphi version and components. <nowiki>Insert non-formatted text here</nowiki><br />
[[Category:Promotion]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=IDE_Window:_Compiler_Options/de&diff=109171IDE Window: Compiler Options/de2017-04-25T13:00:47Z<p>Arabidopsis: /* Nachher ausführen */</p>
<hr />
<div><noinclude>{{IDE Window: Compiler Options}}<!--- This page may be used as template in other pages ---></noinclude><br />
<br />
== Erstellmodi ==<br />
<br />
=== Hinzufügen, Löschen und Aktivieren von Erstellmodi ===<br />
<br />
Diese Möglichkeit gibt es nur für Projekte, nicht für Packages.<br />
<br />
Erstell Modi erlauben es für ein Projekt verschiedene Compilereinstellungen zu speichern. So können zum Beispiel für die Entwicklung (Debugging) andere Compilereinstellungen verwendet werden als für die endgültige Version. Zwischen diesen Einstellungen können Sie dann in der IDE per Mausklick wechseln.<br />
<br />
'''Anmerkung:''' If you want to pass some options depending on the platform, for example passing some extra linker options under OS X, please take a look at [[#Build_Macros|Build Macros]].<br />
<br />
The first grid on the top of the page contains the list of build modes with three columns. <br />
<br />
The first column shows which mode is currently active. When you activate another mode, all compiler options pages will load the settings of the new mode, including the macro values on the build modes page. There is always only one mode active and you can only edit the properties of one mode at a time. Which mode is active is stored in the session file (lps). The default mode is the first mode. <br />
<br />
If your project stores the session in a separate lps file (see Project options / Session / Save session info in), you can store extra modes in the session, so that each developer can have her own set of modes. In this case the second column shows where the mode is stored, in the lpi or the lps (in session). Keep in mind that the first mode is the default mode for the project, so it must be stored in the project, not in the session file.<br />
<br />
The last column is the name of the mode. It is an arbitrary string, so you can give it a short name or a whole sentence.<br />
<br />
*The '''plus''' button adds a new mode, by duplicating the currently active one and activates it.<br />
*The '''minus''' button delete the currently selected mode. There must be at least one mode. If you delete the first mode, which is the default mode, the second mode automatically becomes the default mode.<br />
*The '''up''', '''down''' buttons allows to reorder the modes.<br />
*The '''rightmost''' button shows the differences between build modes.<br />
<br />
'''Hinweis:''': Once you added another build mode there will be a new button in the IDE main bar to quickly switch the currently active mode.<br />
<br />
'''Anmerkung:''': Wenn sie ein neues Projekt mit einer alten IDE öffnen, dann sehen sie nur den Vorgabemodus. Wenn sie das Projekt mit der alten IDE speichern, dann gehen alle anderen Modi, alle Makros und conditionals verloren.<br />
<br />
''Erstellmodi'' existieren seit Version 0.9.31.<br />
<br />
===Hinzufügen eines Release- und eines Debugmodus===<br />
<br />
The most common task for projects will be adding a simple release and a simple debug build modes. Remember to always use the debug build mode, because debugging will not work in the release build mode, and then only use the release build mode in the final release of the application.<br />
<br />
The first step to add these build modes is going to the project options dialog of the project and make sure you have 2 build modes there. One named release and another named debug. By default there will always be one build mode there so you can click once in the + button in this dialog to add another one and you can rename the build modes by double clicking their names. Next make sure you select the debug build mode so that we can configure it.<br />
<br />
[[Image:Build_Mode_Debug.png]]<br />
<br />
Once we select the debug build mode, all configurations from the project options dialog will be specific to this build mode. The most important configuration to set for this build mode is the Linking options, which should enable GDB debugging, as is the default for Lazarus projects, like in this screenshot:<br />
<br />
[[Image:Build_Mode_Debug_Linking.png]]<br />
<br />
To configure the release build mode we should go back to the Build Modes section and activate the release build mode:<br />
<br />
[[Image:Build_Mode_Release.png]]<br />
<br />
And for this build mode also go to the linking section and deactivate generating debug info:<br />
<br />
[[Image:Build_Mode_Release_Linking.png]]<br />
<br />
Now just remember to go back to the Build Modes tab and set the debug build mode as the active one while developing the application and only use the release when making releases.<br />
<br />
=== Den aktiven Erstellmodus auswählen ===<br />
<br />
One can select the currently active build mode either in the "Project Options" dialog or in the main IDE Window, in a special button with a drop down which will appear only if the project has more then 1 build mode, as one can see in this screenshot:<br />
<br />
[[Image:Selecting_Build_Mode_Main_IDE_Windows.png]]<br />
<br />
=== Projektmakros ===<br />
<br />
The second grid at the bottom of the page shows the project macro values. Anmerkung: Dabei handelt es sich um Lazarus-Makros, nicht um FPC-Makros. <br />
<br />
They are simple name, value pairs. Macros can be used in all file names and search paths of the project. Almost all macros have default values so you will only define macros here if you want to override the default. For example a macro '''macro1''' can be used in the ''Other unit files'' by inserting the text ''$(macro1)''. This macro will then be replaced by the value.<br />
<br />
Packages can define macros which can be set (overriden) by the project. <br />
<br />
'''Default value''': Setting a macro value to an empty value is not the same as using the default value. To use the default value of a macro, delete the macro from the list.<br />
<br />
'''Delete a macro''': A macro can be deleted from the list by changing the name to (none) or empty.<br />
<br />
You can set macros depending on other macros on the [[#Build_Macros|page Build Macros]].<br />
<br />
For more details about build macros and conditionals see [[Macros and Conditionals]].<br />
<br />
''Projektmakros'' existieren seit Version 0.9.29.<br />
<br />
==== Widget type ====<br />
<br />
In Lazarus 1.0 and later, you use macros to change the widget set of the project. Click on the combo box in the ''Macro name'' cell and select ''LCLWidgetType''. The ''Macro value'' then shows a combobox where you can select the desired widgetset. If you want to revert to the default widget type, you can delete the two cells again.<br />
<br />
The screenshot below shows how to select qt widgetset:<br />
[[File:BuildModes_DebugRelease_Widgetqt.png]]<br />
<br />
== Pfade ==<br />
<br />
Hier sind die allgemeinen Regeln für die Suchpfade:<br />
<br />
* Relative Pfade werden mit dem Projekt- oder Package-Verzeichnis (wo die .lpi/.lpk Datei ist) erweitert.<br />
* Diese Pfade werden zu den Suchpfaden hinzugefügt. Sie ersetzen sie nicht.<br />
* Die IDE hat einen Satz von Suchpfaden für jedes Verzeichnis. Das bedeutet, dass ein Package Suchpfade haben kann, die sich von denen des aktiven Projekts unterscheiden.<br />
* Wenn ein Package oder Projekt ein Package verwendet, bindet es auch die zugehörigen Suchpfade ein. Sie können die geerbten Suchpfade sehen auf der [[#Vererbt]] Seite.<br />
* Wenn Sie das Lazarus Package-System verwenden, müssen Sie nur höchst selten Suchpfade per Hand eingeben.<br />
* Der FreePascal Compiler hat eine eigene Konfigurationsdatei (Vorgabe: /etc/fpc.cfg), welche einen Satz von Suchpfaden zu den FPC .ppu - Dateien definiert. Zum Beispiel um die FPC Units der RTL oder FCL wie 'classes', 'sysutils' zu finden. Fügen Sie hier keine Suchpfade zu der Quelltextdateien (.pas, .inc) hinzu.<br />
* Suchpfade werden durch ein Semikolon ';' getrennt.<br />
* Führende und nachlaufende Leerzeichen werden von der IDE ignoriert und automatisch entfernt. Die IDE normalisiert die Suchpfade und fügt das Pfadbegrenzungszeichen hinzu (Windows: \, alle anderen: /). Suchpfade werden automatisch für das aktuelle Betriebssystem konvertiert, wenn eine .lpi oder .lpk Datei geöffnet wird.<br />
* Sie können Makros verwenden. Zum Beispiel $(TargetCPU). Siehe [[IDE Macros in paths and filenames/de|IDE Makros in Pfaden und Dateinamen]].<br />
* Wenn Sie nicht einen Suchpfad verwenden wollen, der von einem benutzten Package geerbt wurde, müssen Sie die Compilereinstellungen des benutzten Packages ändern.<br />
* Die IDE hat einen Satz von Pfad-Einstellungen pro Verzeichnis:<br />
** Jedes Verzeichnis im Unit-Suchpfad des Projekts erhält alle Projekt-Suchpfade.<br />
** Jedes Verzeichnis im Unit-Suchpfad des Packages erhält alle Package-Suchpfade.<br />
** Andere Verzeichnisse erhalten die Projekt-Suchpfade. Wenn der Projekt-Suchpfad den '.' enthält, sieht das Verzeichnis auch das Projektverzeichnis.<br />
* Die Verwendung von "uses unitname in 'filename'" wirkt sich nicht auf die anderen Suchpfade aus.<br />
<br />
=== Andere Units (-Fu) ===<br />
<br />
Dies ist der Suchpfad für die Pascal Units (.ppu, .pp, .pas, .p) des Projekts oder Packages. Schauen Sie auf den Fenstertitel, um zu erfahren welches (aktiv ist). Dieser Pfad wird an den FreePascal Compiler übergeben, welcher ihn zu seinem Unit-Pfad hinzufügt.<br />
<br />
* Das Hinzufügen und Entfernen von Units zum Projekt/Package führt zu einer automatischen Nachfrage, ob der Unit-Pfad angepasst werden soll.<br />
* Dieser Suchpfad enthält die Verzeichnisse ihres Projekts (oder Packages), welche die .pas, .pp oder .p Dateien enthalten.<br />
* VORSICHT: Fügen Sie keine Verzeichnisse von verwendeten Lazarus-Packages zu diesem Pfad hinzu. Andernfalls wird FPC die .ppu-Dateien des Packages neu erstellen und sie in ihrem Projektverzeichnis ablegen. Dies führt zu mehrfachen .ppu Versionen und Sie werden seltsame 'Can not find unit' Fehler erhalten.<br />
Zum Beispiel: Fügen Sie keine FPC oder LCL Quellverzeichnisse zu diesem Suchpfad hinzu.<br />
* Wenn Sie einige Units in Ihren Projekten gemeinsam verwenden wollen, sollten Sie ein Package für sie erzeugen. Es ist einfach.<br />
<br />
=== Include-Dateien (-Fi) ===<br />
<br />
Dies ist der Suchpfad für die Include-Dateien (z.B. .inc oder .lrs Dateien).<br />
Dieser Pfad wird an den FreePascal Compiler gegeben, welcher ihn zu seinem Include-Pfad hinzufügt, der von den Include-Direktiven wie {$I filename.inc} oder {$INCLUDE filename.inc} verwendet wird.<br />
<br />
=== Bibliotheken (-FI) ===<br />
<br />
Dies ist der Suchpfad für Bibliotheken (.dll oder .so oder .a Dateien).<br />
<br />
=== Unit-Ausgabeverzeichnis (-FU) ===<br />
<br />
Dies ist das Verzeichnis, in dem der Compiler alle Ausgabedateien (Compilerschalter -FU) wie .ppu, .o oder .rst Dateien ablegt. Wenn Sie die $R Direktive für die .lfm Dateien verwenden, werden auch die .lfm Dateien dorthin kopiert.<br />
<br />
Ein bekanntes Anwendungsbeispiel ist ein Ausgabeverzeichnis namens ''units'', und dazu ein extra Unterverzeichnis für die Ziel-CPU und das Zielbetriebssystem. Zum Beispiel:<br />
<br />
units/$(TargetCPU)-$(TargetOS)<br />
<br />
Anmerkungen:<br />
<br />
*Wenn das Unit-Ausgabeverzeichnis leer ist, wird Lazarus '''nicht''' den '''-FU''' Schalter an den Compiler übergeben. Der Compiler nimmt dann den '''-FE''' Schalter. Siehe [[IDE_Window:_Project_Options#Target_file_name|Project target file]]<br />
*Packages vererben normalerweise ihr Ausgabeverzeichnis an andere Packages via die 'usage' Einstellungen. Sie brauchen keine Package-Pfade manuell zu Ihrem Projekt hinzufügen.<br />
<br />
=== Ziel-Dateiname (-o) ===<br />
<br />
Anmerkung: Dies existiert nur für Projekte, nicht für Packages.<br />
<br />
Set here the filename of the generated executable. If the file is relative it will be expanded with the project directory (where the .lpi file is). If no file is given the executable is put into the unit output directory and has the name of the main source file name (usually the .lpr file) without the extension. If no extension is given, the default extension for the platform is added (e.g. ''.exe'' for MS Windows, none for others).<br />
When a new project was not yet saved and is built the IDE saves the files to the test directory. The relative files are then relative to this directory.<br />
<br />
Lazarus passes the compiler switch <br />
*'''-o''' um den Ziel-Dateinamen zu definieren<br />
*'''-FE''' wenn sich der Ziel-Dateiname nicht im Projektverzeichnis (Verzeichnis mit der .lpi Datei) befindet<br />
*'''-FU''' wenn das Unit-Ausgabeverzeichnis nicht leer ist<br />
<br />
If the target file name is in another directory (not the directory of the .lpi file), Lazarus will pass the '''-FE''' switch to the compiler to make sure that the secondary files, like ''.o'' and ''.rst'' are put into the same directory. If you cleared the ''unit output directory'' then the IDE will not pass the '''-FU''' switch and the compiler will generate the ''.ppu/.o'' files of the units in the target directory too.<br />
<br />
If you cleared the ''unit output directory'' '''and''' your project target file is in the project directory, then neither '''-FU''' nor '''-FE''' is passed to the compiler and the compiler will work Delphi compatible and generate the ''.ppu/.o'' file of each unit in the same directory as the unit.<br />
<br />
==== Konventionen anwenden ====<br />
<br />
Mit der Aktivierung werden verschiedene Namenskonventionen (abhängig von der Zielplattform) angewendet.<br />
<br />
*Windows: Bei einem Programm wird die '''.exe'''-Erweiterung angehängt, bei einer Bibliothek '''.dll'''.<br />
*Unix (z.B. Linux, BSD, Darwin/OS X): Bei einer Bibliothek wird der Name kleingeschrieben und wenn der Name nicht mit 'lib' beginnt, wird '''lib''' vorangestellt.<br />
*Linux, BSD: Wenn es eine Bibliothek ist, wird '''.so''' angehängt.<br />
*Darwin/OS X: Wenn es eine Bibliothek ist, wird '''.dylib''' angehängt.<br />
<br />
=== Andere Quellen ===<br />
<br />
Dies ist der Suchpfad für Pascal Unit-Quellen, der nur von der IDE verwendet wird und nicht vom Compiler. Normalerweise lassen Sie dies leer. Er ist nur dann nützlich, wenn Sie die .ppu-Dateien ohne Lazarus erzeugen. <br />
<br />
Beispiel:<br />
Sie haben ein Verzeichnis mit Quellen und ein Verzeichnis mit den dazugehörigen .ppu Dateien und Sie können oder wollen kein Lazarus-Package erzeugen. Sie fügen das .ppu Verzeichnis zum 'Andere Unitdateien' Pfad hinzu und das .pas Verzeichnis zum 'Andere Quellen' Pfad. Auf diese Weise wird der Compiler die .ppu Dateien verwenden und nicht versuchen, sie jedes Mal neu zu erstellen. Und die IDE wird die Quellen finden und ''Find Declaration'' funktioniert.<br />
<br />
=== Zusätzlicher Debuggerpfad ===<br />
<br />
Diese Verzeichnisse werden zum Suchpfad des IDE-Debuggers hinzugefügt, wenn er nach Quelldateien sucht (Units und Include Dateien).<br />
<br />
== Konfiguration und Ziele ==<br />
<br />
=== Konfigurationsdateien ===<br />
<br />
=== Zielplattform ===<br />
<br />
* Ziel-Betriebssystem<br />
* Ziel-CPU-Familie<br />
* Zielprozessor<br />
<br />
== Parsen ==<br />
<br />
Siehe [http://www.freepascal.org/docs.html Free Pascal - Onlinedokumentation]<br />
<br />
=== Syntax-Modus ===<br />
<br />
Wählen sie hier den Vorgabemodus. Wenn eine Unit keine {$mode irgendeinmodus} Direktive enthält, wird dies als Vorgabe verwendet.<br />
<br />
Siehe [http://www.freepascal.org/docs.html Free Pascal - Online documentation]<br />
<br />
=== Syntaxeinstellungen ===<br />
<br />
* C-artige Operatoren (*=, +=, /= und -=)<br />
* Assertionen verwenden<br />
* LABEL und GOTO zulassen<br />
* C++-artige Inlineanweisungen<br />
* C-artige Makros (global)<br />
* TP/BP 7.0 kompatibel<br />
* Name des Konstruktors muss 'init' sein (Destruktor muss 'done' heißen)<br />
* 'static'-Schlüsselwort in Objekten<br />
* Ansi-Strings verwenden<br />
<br />
=== Assembler-Stil ===<br />
<br />
* -R<x> assembler reading style:<br />
* -Rdefault use default assembler<br />
* -Ratt read AT&T style assembler<br />
* -Rintel read Intel style assembler<br />
<br />
== Kompilieren und Linken ==<br />
<br />
Siehe [http://www.freepascal.org/docs.html Free Pascal - Onlinedokumentation]<br />
<br />
* Optimierungen<br />
* Andere Optimierungen<br />
* Unit-Stil<br />
* Heap- und Stackgrößen<br />
* Linken<br />
<br />
== Debuggen ==<br />
<br />
Siehe [http://www.freepascal.org/docs.html Free Pascal - Onlinedokumentation]<br />
<br />
* Überprüfungen<br />
* Info für GDB<br />
* Andere Debugger-Optionen<br />
<br />
== Ausführlichkeit ==<br />
<br />
* Compilerausgaben<br />
* Abbruch nach Fehlerzahl<br />
<br />
== Meldungen ==<br />
<br />
Siehe [http://www.freepascal.org/docs.html Free Pascal - Onlinedokumentation] Note that adding a lot of verbosity slows down the parsing of the compiler out much, sogar wenn die meisten Nachrichten im Nachrichtenfenster verborgen werden.<br />
<br />
== Andere ==<br />
<br />
Siehe [http://www.freepascal.org/docs.html Free Pascal - Onlinedokumentation]<br />
<br />
* Bedingungen<br />
* Benutzerdefinierte Einstellungen<br />
<br />
== IDE Makros ==<br />
<br />
This page allows to define your project/package specific macros and conditionals. The IDE already provides a lot of [[IDE_Macros_in_paths_and_filenames|macros]]. You can add your own macros that are valid when the project/package is loaded.<br />
<br />
Conditionals allow to set macro values depending on target platform and other macros. For example you can add a linker option when compiling for Mac OS X.<br />
<br />
Use the left '''+''' button to add a new macro for the project/package. Select a macro and click on the middle '''+''' button to add a new possible value. The actual value of a macro is set in the conditionals below, or by the current project on the '''build modes''' page (IDE menu / Project / Project Options / Compiler options / Build Modes).<br />
To delete a value or a macro, select it and click on the '''-''' button.<br />
<br />
The conditionals use a scripting language similar to pascal and are edited in the text editor at the bottom of the page. Many short cuts work like in the source editor, including word/identifier completion.<br />
<br />
For more details about build macros and conditionals see [[Macros and Conditionals]].<br />
<br />
[[Image:Compileroptions buildmacros1.png]]<br />
<br />
Build macros and conditionals exist since 0.9.29.<br />
<br />
== IDE Makrowerte ==<br />
<br />
== Vererbt ==<br />
<br />
Diese Seite zeigt alle Compilereinstellungen, die von Packages geerbt wurden. Packages erben Optionen über ihre 'usage' Optionen.<br />
<br />
The topmost node shows all inherited options, that is the sum of all used packages.<br />
<br />
The nodes below show the inherited options of each use package.<br />
<br />
== Compiler-Kommandos ==<br />
<br />
=== Makedatei anlegen ===<br />
<br />
Aktivieren sie es, wenn die IDE vor jedem Erstellen ein Makefile und eine Makefile.fpc anlegen soll. Dies wird gegenwärtig nur für Packages unterstützt, nicht für Projekte.<br />
<br />
=== Vorher ausführen ===<br />
<br />
Richten sie hier einen Befehl ein, der vor dem Starten des Compilers ausgeführt wird.<br />
<br />
Aufruf an:<br />
* Kompilieren - ausführen bei normalem Kompilieren (F9).<br />
* Neu kompilieren - ausführen, wenn alles neu erstellt wird. This could for example a script to clean up.<br />
* Start - ausführen bei schnellem Kompilieren. Wenn ein Projekt gestartet wird, prüft die IDE, ob eine Neuerstellung notwendig ist. Wenn keine Neuerstellung notwendig ist, überspringt die IDE den Kompilierungsschritt. Setzen sie diese Option, um den Befehl immer auszuführen, sogar wenn der Kompilierungsschritt übersprungen wird.<br />
<br />
Die IDE kann den Output des Befehls ndos analysieren und filtern und bei Fehlern stoppen. Aktivieren sie die Einstellungen, welche Meldungen die IDE überwachen soll.<br />
<br />
=== Compiler ===<br />
<br />
Dies ist der Compiler-Pfad, der vom Projekt oder Package verwendet wird. Voreinstellung ist das Makro $(CompPath), das durch den Compiler-Dateinamen in den Umgebungseinstellungen ersetzt wird.<br />
<br />
=== Nachher ausführen ===<br />
<br />
Richten Sie hier einen Befehl ein, der nach dem Starten des Compilers ausgeführt wird. Siehe oben 'Vorher ausführen' für Details.<br />
<br />
Eine nützliche Anwendung wäre beispielsweise, sich eine fremdkompilierte (cross-compiled) ausführbare Datei auch immer gleich automatisch vom PC auf die Zielhardware, etwa einen Raspberry, kopieren zu lassen:<br />
<br />
scp "$TargetFile()" pi@raspberry:/home/pi/bin<br />
<br />
(Das kann tatsächlich sogar ohne Kennworteingabe geschehen, wenn man sich mit "ssh-keygen" ein Schlüsselpaar erzeugt und den öffentlichen Schlüssel dann der Datei authorized_keys des Empfängersystems hinzufügt, indem man "ssh-copy-id [remoteuser@]remotehost" aufruft; Details finden sich z.B. [https://wiki.debian.org/de/SSH#SSH_ohne_Passwort hier])<br />
<br />
==Diese Einstellungen gelten als Vorgabe für neue Projekte==<br />
<br />
Kreuzen Sie diese Checkbox an und klicken Sie auf OK. Die Einstellungen werden gespeichert in ''~/.lazarus/compileroptions.xml'' (oder welchen primären Konfigurationspfad Sie auch immer haben). Wenn Sie ein neues Projekt erzeugen, wird diese Datei geladen und initialisiert die Compilereinstellungen.<br />
Dieses Merkmal existiert seit Version 0.9.29.<br />
<br />
== Buttons ==<br />
<br />
=== Hilfe ===<br />
<br />
Ruft die englische Version dieser Seite auf.<br />
<br />
=== Einstellungen anzeigen ===<br />
<br />
Öffnet einen Dialog, der die aktuellen Kommandozeilenparameter anzeigt.<br />
<br />
=== Test ===<br />
<br />
Dies wird verschiedene Tests starten, um übliche Konfigurationsfehler zu finden. Bei FPC 2.2.0 wird vor einigen doppelten Units gewarnt. Die Warnungen sind korrekt. Aber sie können diese ignorieren, wenn sie die betroffenen Units nicht verwenden.<br />
<br />
=== Laden/Speichern ===<br />
<br />
Öffnet einen Dialog zum speichern/öffnen der aktuellen Compilereinstellungen in/aus einer XML Datei.<br />
<br />
=== OK ===<br />
<br />
Wendet die Änderungen an und beendet den Dialog.<br />
<br />
=== Abbrechen ===<br />
<br />
Macht alle Änderungen rückgängig und beendet den Dialog.</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=IDE_Window:_Compiler_Options&diff=109170IDE Window: Compiler Options2017-04-25T12:51:33Z<p>Arabidopsis: </p>
<hr />
<div><noinclude>{{IDE Window: Compiler Options}}<!--- This page may be used as template in other pages ---></noinclude><br />
<br />
== Paths ==<br />
[[image:CompilerOptions-Paths.png|none|Compiler Options - Paths]]<br />
<br />
Here are the general rules about search paths:<br />
<br />
* Relative paths are expanded with the project or package directory (where .lpi/.lpk file is).<br />
* These paths are added to the search paths. They do not replace existing paths.<br />
* The IDE has one set of search paths for every package/project. That means a package can have different search paths than the active project.<br/>"set of search paths" refers to unit search path, include search path, sources search path, ...<br />
* If a package or project uses a package, it will inherit the ''usage'' search paths. You can see the inherited search paths in the [[#Inherited|Inherited]] page.<br />
** If you do not want to use a search path inherited from a used package you must change the compiler options of the used package.<br />
* Using the Lazarus package system, you hardly ever need to set search paths manually.<br />
* The FreePascal Compiler has a configuration file of its own (default /etc/fpc.cfg) which defines a set of search paths to the FPC ppu files. For example to find the FPC units of the RTL or the FCL like 'classes', 'sysutils'. Do not add search paths to source files (.pas, .inc) in there.<br />
* Search paths are separated by semicolon ';'.<br />
* Leading and trailing spaces are ignored and automatically removed by the IDE. The IDE normalizes search paths and appends the path delimiter (Windows: \, all other: /). Search paths are automatically converted to the current operating system when opening an lpi or lpk file.<br />
* You can use macros. For example $(TargetCPU). See [[IDE Macros in paths and filenames]].<br />
* The IDE has one set of paths settings per directory:<br />
** Every directory in the unit search path of the project gets all the project search paths.<br />
** Every directory in the unit search path of the package gets all the package search paths.<br />
** Other directories get the project search paths. If the project search path contains the '.' the directory will see the project directory too.<br />
* Using "uses unitname in 'filename'" does not affect any search path.<br />
<br />
=== Other Unit Files ===<br />
This is the search path for the Pascal units (.ppu, .pp, .pas, .p) of the project or package. See the title of the window to know which. This path is given to the FreePascal Compiler, which adds it to its Unit Path.<br />
<br />
* Adding and removing units to the project/package will automatically ask to adjust the unit path.<br />
* This search path contains the directories of your project (or your package) that contain the .pas, .pp or .p files.<br />
* If you want to share some units between your projects, create a package for them. It's easy.<br />
{{Note|Do not add directories of used Lazarus packages to this path. Otherwise FPC will rebuild the .ppu files of the package and put them into your project directory. You will end up with multiple .ppu versions and you will get strange 'Can not find unit' errors. <br /> For example: Do not add any FPC or LCL source directory to this search path.}}<br />
<br />
=== Include Files ===<br />
<br />
This is the search path for the include files (e.g. .inc, .lrs files).<br />
This path is given to the FreePascal Compiler, which adds it to its Include Path, which is used by include directives like {$I filename.inc} or {$INCLUDE filename.inc}.<br />
<br />
=== Other sources ===<br />
<br />
This is a search path for Pascal unit sources which is only used by the Lazarus IDE (not by the compiler). Normally you will leave this empty. It is only useful when you build the ppu files '''without''' Lazarus.<br />
<br />
Example:<br />
You have a directory with sources and another directory with the corresponding .ppu files and you can't or don't want to create a Lazarus package. You add the .ppu directory to the 'Other Unit Files' path and the .pas directory to the 'Other sources' path. This way the compiler will use the .ppu files and not try to rebuild them every time. Also, the IDE will find the sources and Find Declaration works.<br />
<br />
=== Libraries ===<br />
<br />
This is the search path for libraries (.dll or .so or .a files). These are only used in the compiling/linking phase; e.g. when running your application under the debugger, you need to make sure required libraries are present in the expected place (e.g. - depending on platform - executable directory, PATH, .so/.dylib search path).<br />
<br />
=== Unit output directory ===<br />
<br />
This is the directory where the compiler will put all output, like .ppu, .o, .rst files (it passes this to compiler switch '''-FU'''). If you are using the $R directive for the lfm files, it will also copy the lfm files there.<br />
<br />
A popular usage example is a output directory named ''units'', and then an extra sub-directory for the CPU and OS target. For example:<br />
<br />
units/$(TargetCPU)-$(TargetOS)<br />
<br />
Notes:<br />
<br />
*If the unit output directory is empty, Lazarus will '''not''' pass the '''-FU''' switch to the compiler. The compiler will then use the '''-FE''' switch. See [[IDE_Window:_Project_Options#Target_file_name|Project target file]]<br />
*Packages normally inherit their output directory to other packages via the 'usage' options. You do not need to add package paths manually to your project.<br />
*If the output directory of a package is empty, the macro $(PkgOutDir) is too and will not be inherited to descending packages and projects. Use a dot '.' to define the current directory.<br />
<br />
=== Target file name ===<br />
<br />
Note: Only projects have this. This option is not available for packages.<br />
<br />
Set here the filename of the generated executable. If the file is relative it will be expanded with the project directory (where the .lpi file is). If no file is given the executable is put into the unit output directory and has the name of the main source file name (usually the .lpr file) without the extension. If no extension is given, the default extension for the platform is added (e.g. ''.exe'' for MS Windows, none for others).<br />
When a new project was not yet saved and is built the IDE saves the files to the test directory. The relative files are then relative to this directory.<br />
<br />
Lazarus passes the compiler switch <br />
*'''-o''' to define the target file name.<br />
*'''-FE''' if the target file name is not in the project directory (where the lpi file is)<br />
*'''-FU''' if the unit output directory is not empty<br />
<br />
If the target file name is in another directory (not the directory of the .lpi file), Lazarus will pass the '''-FE''' switch to the compiler to make sure that the secondary files, like ''.o'' and ''.rst'' are put into the same directory. If you cleared the ''unit output directory'' then the IDE will not pass the '''-FU''' switch and the compiler will generate the ''.ppu/.o'' files of the units in the target directory too.<br />
<br />
If you cleared the ''unit output directory'' '''and''' your project target file is in the project directory, then neither '''-FU''' nor '''-FE''' is passed to the compiler and the compiler will work Delphi compatible and generate the ''.ppu/.o'' file of each unit in the same directory as the unit.<br />
<br />
==== Apply Conventions ====<br />
<br />
Enable this to apply various naming conventions depending on the target platform.<br />
<br />
*Windows: If it is a program, it appends the '.exe' extension; if it is a library, it appends '.dll'.<br />
*Unix (e.g. Linux, BSD, Darwin/OS X): If it is a library the name is lowercased and if the name does not start with 'lib' it prepends 'lib'.<br />
*Linux, BSD: If it is a library it appends '.so'.<br />
*Darwin/OS X: If it is a library it appends '.dylib'.<br />
<br />
=== Debugger path addition ===<br />
<br />
These directories are added to the search path of the IDE debugger, when it searches for sources (units and include files).<br />
<br />
=== LCL widget type (pre Lazarus 1.0)===<br />
<br />
In older Lazarus releases: this is the used LCL widget set. Normally the default widget set is used. If you want to try another or you are cross compiling, select another widget set here.<br />
<br />
* The default widget set of a package is the widget set of the current project.<br />
* The default widget set of the current project depends on the current operating system. For example: win32 for windows 2000.<br />
* You should not set the widget set for a package, because then the project cannot override it. Only set it, if the package is part of a set of packages - one for each widget set.<br />
<br />
*In Lazarus 1.0, the "Select another LCL widget set (macro LCLWidgetType)" redirects you to the [[IDE_Window:_Compiler_Options#Widget_type|Build Modes]] page, where you can add the macro '''LCLWidgetType'''.<br />
*In Lazarus 1.1, the "Select another LCL widget set (macro LCLWidgetType)" redirects you to the [[IDE_Window:_Compiler_Options#Additions_and_Overrides|Additions and Overrides]] page, where you can add an '''IDE macro''' '''LCLWidgetType'''.<br />
<br />
== Config and Target ==<br />
[[File:CompilerOptions-Config and Target.png]]<br />
<br />
== Build modes ==<br />
<br />
=== Adding, deleting, activating build modes ===<br />
<br />
Only projects have build modes. A package does not have build modes.<br />
<br />
Build modes allow to define '''sets of compiler options''' and to quickly switch between these sets. For example you can define a ''mode'' for debugging which compiles your project with range checking, while your default mode does not.<br />
<br />
'''Note:''' If you want to pass some options depending on the platform, for example passing some extra linker options under OS X, please take a look at [[#Build_Macros|Build Macros]].<br />
<br />
How to reach this dialog: Project / Project Options / Compiler Options.<br />
Make sure that "Build Modes" is enabled.<br />
<br />
[[File:EditProjectBuildModes.png]]<br />
<br />
Click on the "..." button right to add/remove/rename build modes:<br />
<br />
[[File:ListOfBuildModes1.png]]<br />
<br />
The grid contains the list of build modes with three columns. <br />
<br />
The first column shows which mode is currently active, it is checked. When you activate another mode, all compiler options pages will load the settings of the new mode, including the macro values on the build modes page. There is always only one mode active and you can only edit the properties of one mode at a time. Which mode is active is stored in the session file (lps). The default mode is the first mode. <br />
<br />
If your project stores the session in a separate lps file (see Project options / Session / Save session info in), you can store extra modes in the lps session file, so that each developer can have her own set of modes. In this case the second column shows where the mode is stored, in the lpi or the lps (in session). Keep in mind that the first mode is the default mode for the project, so it must be stored in the project, not in the session file.<br />
<br />
The last column is the name of the mode. It is an arbitrary string, so you can give it a short name or a whole sentence.<br />
<br />
*The '''plus''' button adds a new mode, by duplicating the currently active one and activates it.<br />
*The '''minus''' button delete the currently selected mode. There must be at least one mode. If you delete the first mode, which is the default mode, the second mode automatically becomes the default mode.<br />
*The '''up''', '''down''' buttons allows to reorder the modes.<br />
*The '''rightmost''' button shows the differences between build modes.<br />
<br />
'''Hint:''': Once you added another build mode there will be a new button in the IDE main bar to quickly switch the currently active mode.<br />
<br />
'''Note:''': When opening a new project with an old IDE (<0.9.31), you will only see the default mode. If you save the project with the old IDE you will loose all other modes, all macros and conditionals.<br />
<br />
''Build modes'' exist since 0.9.31.<br />
<br />
===Adding a release and debug build modes===<br />
<br />
The most common task for projects will be adding a simple release and a simple debug build modes. Remember to always use the debug build mode, because debugging will not work in the release build mode, and then only use the release build mode in the final release of the application.<br />
<br />
# Go to Project / Project Options / Compiler Options<br />
# Enable "Build Modes" at the top. A selector for build modes and an edit button will appear.<br />
# Click on the button labelled "..." to open the build modes dialog.<br />
# Click on Create Debug and Release modes. This adds the two build modes "Debug" and "Release".<br />
# Close the dialog.<br />
<br />
[[File:BuildModesAddedDebugAndRelease1.png]]<br />
<br />
Every Build Mode is a complete set of compiler options. You can switch easily between your build modes either via the combobox at the top of the project options, or in the IDE main toolbar, with the arrow button right of the ''Compile'' button.<br />
<br />
[[File:BuildModeSelectorInIDEToolBar1.png]]<br />
<br />
Once we select the ''Debug'' build mode, all configurations from the project options dialog will be specific to this build mode. Here is the default ''Debugging'' page in ''Debug'' mode:<br />
<br />
[[File:BuildModeDebugPageDebugging.png]]<br />
<br />
When we select the ''Release'' build mode, all configurations from the project options dialog will be specific to this build mode. Here is the default ''Debugging'' page in ''Release'' mode:<br />
<br />
[[Image:BuildModeReleasePageDebugging.png]]<br />
<br />
===Selecting the active build mode===<br />
<br />
One can select the currently active build mode either in the "Project Options" dialog or in the main IDE Window, in a special button with a drop down which will appear only if the project has more then 1 build mode, as one can see in this screenshot:<br />
<br />
[[Image:Selecting_Build_Mode_Main_IDE_Windows.png|none]]<br />
<br />
=== Project macros ===<br />
<br />
See [[IDE_Window:_Compiler_Options#Changing_the_LCLWidgetType_in_Version_1.1_and_above|here]] for adding your own macros or defining the LCLWidgetType macro.<br />
<br />
== Parsing ==<br />
[[image:CompilerOptions-Parsing.png|none|Compiler Options - Parsing]]<br />
<br />
=== Syntax mode ===<br />
Choose the default [[Compiler Mode]]. If a unit does not contain a {$mode somemode} directive, this is used as the default.<br />
<br />
=== Syntax Options ===<br />
See [http://www.freepascal.org/docs-html/prog/prog.html FPC Programmer's guide].<br />
* C Style Operators (*=, +=, /= and -=)<br />
* Include Assertion Code<br />
* Allow LABEL and GOTO<br />
* C++ Styled INLINE<br />
* C Style Macros (global)<br />
* Constructor name must be '''init''' (destructor must be '''done''')<br />
* Static Keyword in Objects<br />
* Use [[String|AnsiStrings]]<br />
<br />
=== Assembler style ===<br />
Sets the value of -R<x> option:<br />
<br />
* -Rdefault: use default assembler<br />
* -Ratt: use AT&T style assembler<br />
* -Rintel: use Intel style assembler<br />
<br />
== Code ==<br />
== Compilation and Linking ==<br />
[[image:CompilerOptions-Compilation_and_Linking.png]]<br />
<br />
For debug settings, see [[Debugger_Setup#Project_Options]]<br />
<br />
== Debugging ==<br />
[[image:CompilerOptions-Debugging.png|none|Compiler Options - Debugging]]<br />
<br />
== Verbosity == <br />
[[image:CompilerOptions-Verbosity.png|none|Compiler Options - Verbosity]]<br />
<br />
See [http://www.freepascal.org/docs.html Free Pascal - Online documentation]. Note that adding a lot of verbosity slows down the parsing of the compiler output much, even if most of the messages will be hidden in the messages view.<br />
<br />
== Messages == <br />
[[image:CompilerOptions-Messages.png|none|Compiler Options - Messages]]<br />
<br />
(Introduced in Lazarus 0.9.27 version)<br />
The page allows to control what compiler output Notes, Hints and Warnings are shown. <br />
The feature requires FP compiler to support -m switch (version 2.2.2 or higher).<br />
<br />
It's also possible to specify message Language file (file should be Utf-8 encoded), to see compiler messages translated, without need to modify fpc.cfg file. <br />
<br />
Samples of the messages translation file can be found at ${LazarusDir}/fpc/${FPCTARGET}/msg, i.e. C:\Lazarus\fpc\2.2.3\msg<br />
<br />
== Custom Options ==<br />
[[image:CompilerOptions-Custom_Options.png]]<br />
<br />
You'll typically define some compiler options here. For example you can define in a build mode something like<br />
<br />
<code><br />
-dRELEASE<br />
</code><br />
<br />
Then in the build mode, only the code surrounded by the {$IFDEF RELEASE} {$ENDIF} will be compiled. This can be used alternatively to the Macro system, particularly if you come from Delphi.<br />
<br />
Spaces at start and end are removed. Line breaks are replaced by a space before passing to the compiler. A leading space is added automatically.<br />
<br />
The IDE substitutes IDE macros in custom options and parses the options. Flags like -dRelease are passed to codetools, so the source editor knows them immediately.<br />
<br />
{{Warning|Do not add the path options -Fu, -Fi, -Fl, -FU, -o. Use the fields on the page [[IDE_Window:_Compiler_Options#Paths|Paths]] instead. The IDE ignores the paths in the custom options. It does not update them, when you add or delete files or when you open the project on another host.}}<br />
<br />
== Additions and Overrides ==<br />
The page "Additions and Overrides" exists since 1.1.<br />
<br />
=== Overview ===<br />
The page contains a matrix of build options.<br />
<br />
[[File:CompilerAdditionsAndOverrides1.png|none]]<br />
<br />
The settings "custom options", "output directory", and "IDE Macros" within any target can be switched on and off separately for each <br />
build mode.<br />
<br />
Thus, for each target, there is a Matrix of enabling check boxes.<br />
<br />
The vertical words in the header show all the Build Modes that are currently defined, and by this they denote the column in the matrices.<br />
<br />
At the right side of each row of any matrix, the description of the type (such as "Custom", "OutDir", or "IDE Macro" ) and the value of the option to be enabled, is given.<br />
<br />
=== Types of build options ===<br />
A build option can<br />
*set an '''IDE macro'''. The value must be of the form '''MacroName:=Value'''. For instance '''LCLWidgetType:=qt'''. You can use IDE macros in the value, but not in the name.<br />
*append some custom compiler options via '''Custom''' (e.g. append -O3). You do not need a leading space. That is added automatically. See the notes about [[IDE_Window:_Compiler_Options#Other|Custom options]].<br />
*override the output directory (-FU) via '''OutDir'''. Note that when you use a relative directory like ''lib/$(TargetOS)'' the working directory of the target is added, not the project directory. For example when the option overrides the output directory of the package ''SynEdit'', then the output directory of synedit is changed to ''<lazarusdir>/components/synedit/lib/$(TargetOS)''.<br />
<br />
You can create a new option by clicking on the '''Add''' button above the matrix. You can change the type of an option at any time.<br />
<br />
=== Enabling build options in build modes ===<br />
An option can be enabled with the build modes of the project. You can enable the option only in one build mode or several of them. Each build option has a row in the matrix, each build mode has a column in the matrix. Each combination has a checkbox.<br />
Build options are applied from top to bottom.<br />
<br />
Note that enabling options in build modes of the session (stored in the .lps) does '''not''' alter the ''lpi'' file. This information is stored in the ''lps'' file. That's why these checkboxes have a yellow background.<br />
<br />
The currently active build mode and options have a green background.<br />
<br />
When you rename a build mode the enabled states of the lpi and lps options are migrated too. The enabled states of IDE options are *not* migrated. For example when an IDE option is enabled for mode ''debug'' and you rename the mode to ''Test'', then the IDE option is still enabled for mode ''debug'' for other projects.<br />
<br />
=== Storage location of build options ===<br />
An option can be stored in <br />
*the project (.lpi)<br />
*the project session (.lps)<br />
*or in the IDE configuration (environmentoptions.xml), then it is available to all projects<br />
<br />
Build options are applied from top to bottom. That means first the options stored in the IDE, then the options stored in the .lpi and last the options stored in the session.<br />
<br />
You can move build options and whole targets via the Up and Down button above the matrix to other storage groups.<br />
<br />
'''Warning''': Adding options to the IDE configs can be dangerous. For example when you have an option that is enabled for mode ''debug'' then this option is applied to '''all''' projects with this mode. For instance when you open a third party project having the build mode ''debug'' the option will be applied and there will be no warning. This might break the project.<br />
<br />
=== Targets of build options ===<br />
A build option can be applied to the project and/or to one or more packages. You can limit the scope of the build options to only apply to specific targets (project, packages). Build options are grouped by '''Targets'''. The '''targets''' are case insensitive and allow the asterisk "*" for any number of arbitrary characters and the question mark "?" for one arbitrary character. You can exclude targets by prepending a minus "-". To edit a target click behind the 'Targets:'.<br />
<br />
Examples of targets:<br />
*'''*''': The asterisk "*" means fits all. The option is applied to the project and all packages. This is the default.<br />
*'''#project''': This fits the project itself. The option is applied only to the project.<br />
*'''LCL,Lazutils''': Apply it only to package "LCL" and "LazUtils"<br />
*'''*dsgn,-syneditdsgn''': Apply it to all packages ending with "dsgn", except "syneditdsgn".<br />
<br />
You can have any number of targets. You can create a new target via the the '''Add''' button above the matrix. You can move targets via the up and down buttons to other storages. All build options of the target group are moved as well.<br />
<br />
=== Colors in the matrix ===<br />
*'''Green''': currently active mode and options<br />
*'''Yellow''': stored in session, not altering the lpi<br />
*'''Red''': syntax error<br />
<br />
=== Examples for additions and overrides ===<br />
*Append compiler options to packages without touching the lpk. For example you can append range checking ''-Cr'' via '''custom''' option under '''Targets: *'''.<br />
*Changing the output directory of packages without touching the lpk. For example add a '''OutDir''' under '''Targets: *'''.<br />
*Define IDE macros only for some packages or only for the project. For example compile the LCL with flag '''-dQT_NATIVE_DIALOGS''', add a new target '''Targets: LCL''', then add a custom option.<br />
*Append compiler options to all projects with build mode "debug" by adding options to the IDE storage group.<br />
*Change the package(s) output directory for all projects with build mode "release". Add the build option to the options stored in the IDE.<br />
*Combine the above with sessions and you can alter third party projects and packages without touching them.<br />
<br />
==== Changing the LCLWidgetType in Version 1.1 and above ====<br />
This setting is only available when the project uses the package LCL.<br />
<br />
Go to Project > Project Options > Comiler Options > Additions and Overrides > Set "LCLWidgetType".<br />
<br />
[[File:SetLCLWidgetTypeIn1 7.png]]<br />
<br />
==== Add a flag to project and all packages ====<br />
Note: This modifies the project (.lpi). It does not alter the package files (.lpk), but it effects them when you build the project. It also effects building the IDE.<br />
<br />
Go to '''Additions and Overrides'''. Click on the '''Add''' button and select '''Custom Option''':<br />
<br />
[[File:addflagtoprojectsandpackages1.png]]<br />
<br />
You should now see a "''Targets: *''" and the new option. It is enabled for the currently active build mode and disabled for all other. The '''Targets: *''' means it applies to the project and all packages.<br />
<br />
[[File:addflagtoprojectsandpackages2.png]]<br />
<br />
Click in the value cell behind the option and add your flag. For example: '''-dSomeFlag'''.<br />
<br />
[[File:addflagtoprojectsandpackages3.png]]<br />
<br />
That's it.<br />
<br />
==== Add a flag to all projects and packages ====<br />
The flag from the previous paragraph is only active when the project is loaded. To set the flag for all projects, select the option and click on the '''up''' button (green arrow up). This moves the option to the "Stored in IDE" group.<br />
<br />
[[File:addflagtoallprojectsandpackages1.png]]<br />
<br />
Note: The IDE uses the options of build mode "default".<br />
<br />
==== Change the output directory of project and all packages ====<br />
Go to '''Additions and Overrides'''. Click on the '''Add''' button and select '''Output Directory (-FU)'''.<br />
<br />
[[File:AddsAndOverridesOutDir1.png]]<br />
<br />
You should now see a "''Targets: *''" and the new option "OutDir" with the default value '''lib/$(TargetCPU)-$(TargetOS)/$(BuildMode)'''. It is enabled for the currently active build mode and disabled for all other. The '''Targets: *''' means it applies to the project and all packages.<br />
<br />
[[File:AddsAndOverridesOutDir2.png]]<br />
<br />
For example: Click in the value cell behind the option and change it to '''lib/$(FPCVer)/$(TargetCPU)-$(TargetOS)'''. This will use different output directories for each Free Pascal compiler version.<br />
<br />
If you want to use the same output directories for all your projects, you can put the option under '''Stored in IDE'''. Click in the value cell of the OutDir option to select the row. Then use the ''Up'' (arrow up) button to move the option.<br />
<br />
If you want to apply the output directory to all packages, but not projects, change the '''Targets''' value from ''*'' to ''*,-#project''.<br />
<br />
[[File:AddsAndOverridesAllPkgOutDir1.png]]<br />
<br />
'''Note:''' If a package does not support your output directory, append to ''Targets'' value '''-packagename'''. For example: '''*,-chmhelp'''.<br />
<br />
If you want to put the package output files into sub directories of the project, change the OutDir to '''$(ProjPath)/lib/$(PkgName)/$(TargetCPU)-$(TargetOS)/$(BuildMode)'''. Note the use of the macros ''$(ProjPath)'' for the project directory and ''$(PkgName)'' to give each package its own directory.<br />
<br />
[[File:OutputDirectoryOFAllPackagesIntoProjectDirectory.png]]<br />
<br />
For example if your project directory is ''C:\pascal\myapp'' then the package LCL will be compiled into ''C:\pascal\myapp\lib\LCL\i386-win32\default''.<br />
<br />
==== Add a flag to one package without altering the lpk itself ====<br />
This examples appends the option ''-vm4104'' to the package ''lazreport''.<br />
<br />
*Go to '''Additions and Overrides'''.<br />
*Click on the '''Add''' button and select "New Target". A new row is inserted with "Targets: *"<br />
*Click on the new row right behind the "Targets:". The '''*''' is now editable.<br />
*Change it to the package name. In this example: ''lazreport''. Press return or click on another row to finish editing.<br />
*When you move the mouse over the new row you should see the hint ''Apply to all packages matching the name "lazreport"''.<br />
*Click on the '''Add''' button and select "Custom Option". A new row is inserted below the row ''Targets: lazreport''. Note: You can move rows using the green arrows<br />
*Click in the new empty value and change its value to '''-vm4104'''.<br />
<br />
This option is stored in your current project (lpi) and is only added if you compile this project. If the option should be used with all your projects on your machine, use the green buttons to move the ''Targets: lazeport'' up to ''Stored in IDE''.<br />
<br />
[[File:AdditionsAndOverridesOptionForSinglePkg1.png]]<br />
<br />
== Compilation ==<br />
== Compiler Commands ==<br />
[[image:CompilerOptions-Compiler_Commands.png]]<br />
<br />
;Create Makefile<br />
Enable this, if the IDE should create a Makefile and a Makefile.fpc before each build. This is currently only supported for packages, not for projects.<br />
<br />
;Execute before: Here, you can configure a command to execute before running the compiler.<br />
;Call on<br />
* Compile - execute when normally compiling (F9).<br />
* Build - execute when rebuilding all. This could for example be a script to clean up.<br />
* Run - execute when quick compiling. When running a project, the IDE checks if rebuild is needed. If no rebuild is needed the IDE skips the compile step. Set this option to always execute the command, even if the compile step is skipped.<br />
;scan for messages:The IDE can parse and filter the output of the command and stop on errors. Check the boxes for which messages the IDE should watch.<br />
<br />
=== Compiler ===<br />
This is compiler path used by the project or package. Default is the macro $(CompPath), which is replaced with the compiler filename in the environment options.<br />
<br />
=== Execute after ===<br />
Provide an (optional) command to execute after running the compiler. See above 'Execute before' for details.<br />
<br />
One handy usage might be to automatically copy your cross-compiled executable from your PC onto your target device, e.g. a Raspberry:<br />
scp "$TargetFile()" pi@raspberry:/home/pi/bin<br />
(And yes, this works even without a password, if you create a key pair with ssh-keygen and then add it to sour target's authorized_keys file via "ssh-copy-id [remoteuser@]remotehost"; for details see [https://www.debian.org/devel/passwordlessssh here])<br />
<br />
== Inherited ==<br />
'''Note: ''' This was moved in Lazarus 1.1 to the '''Show Options''' dialog.<br />
<br />
This page shows all the compiler options inherited from packages. Packages inherit options via their '''usage''' [[IDE_Window:_Package_Options|options]].<br />
<br />
The topmost node shows all inherited options, that is the sum of all used packages.<br />
<br />
The nodes below show the inherited options of each used package. <br />
<br />
You can see/edit the set the used packages for the project in the project inspector. You can see/edit the set of used packages for a package in the package editor.<br />
<br />
For information about packages in general see [[Lazarus_Packages|Lazarus Packages]].<br />
<br />
== Use these settings as default for new projects ==<br />
Check this checkbox and click Ok. The settings will be saved to ''~/.lazarus/compileroptions.xml'' (or whatever you have as primary config path). When you create a new project this file will be loaded to initialize the compiler options.<br />
This feature exists since 0.9.29.<br />
<br />
== Buttons ==<br />
=== Test ===<br />
This will run various test and detects common configurations mistakes. For fpc 2.2.0 it will warn about some double units. The warnings are correct, but you can ignore them, if you don't use these units.<br />
<br />
=== Show Options ===<br />
Opens a dialog and presents the current command line parameters.<br />
<br />
=== Load/Save ===<br />
Opens a dialog to save and/or load the current compiler options from/to a xml file.<br />
<br />
=== Ok ===<br />
This will apply the changes and then exit the dialog.<br />
<br />
=== Cancel ===<br />
This will undo all changes and exits the dialog.<br />
<br />
----<br />
----<br />
<br />
== IDE Macros ==<br />
[[image:CompilerOptions-IDE Macros.png|none|Compiler Options - IDE Macros]]<br />
<br />
<br />
===For 0.9.29 to 1.0.x===<br />
This page allows to define your project/package specific macros and conditionals. The IDE already provides a lot of [[IDE_Macros_in_paths_and_filenames|macros]]. You can add your own macros that are valid when the project/package is loaded.<br />
<br />
Conditionals allow to set macro values depending on target platform and other macros. For example you can add a linker option when compiling for Mac OS X.<br />
<br />
Use the left '''+''' button to add a new macro for the project/package. Select a macro and click on the middle '''+''' button to add a new possible value. The actual value of a macro is set in the conditionals below, or by the current project on the '''build modes''' page (IDE menu / Project / Project Options / Compiler options / Build Modes).<br />
To delete a value or a macro, select it and click on the '''-''' button.<br />
<br />
The conditionals use a scripting language similar to pascal and are edited in the text editor at the bottom of the page. Many short cuts work like in the source editor, including word/identifier completion (default: Ctrl+Space).<br />
<br />
For more details about build macros and conditionals see [[Macros and Conditionals]].<br />
<br />
[[Image:Compileroptions buildmacros1.png|none]]<br />
<br />
This page exists since version 0.9.29.<br />
<br />
===For 1.1 and above===<br />
This page is only available for packages. It lets packages define their own IDE macros. The IDE already provides a lot of [[IDE_Macros_in_paths_and_filenames|macros]] itself.<br />
<br />
Use the left '''+''' button to add a new macro for the project/package. Select a macro and click on the middle '''+''' button to add a new possible value. The actual value of a macro is set in the conditionals below, or by the current project on the '''build modes''' page (IDE menu / Project / Project Options / Compiler options / Build Modes).<br />
To delete a value or a macro, select it and click on the '''-''' button.<br />
<br />
For more details about build macros and conditionals see [[Macros and Conditionals]].<br />
<br />
== Other ==<br />
See [http://www.freepascal.org/docs.html Free Pascal - Online documentation]<br />
<br />
You'll typically define some compiler options here. For example you can define in a build mode something like<br />
<br />
<code><br />
-dRELEASE<br />
</code><br />
<br />
Then in the build mode, only the code surrounded by the {$IFDEF RELEASE} {$ENDIF} will be compiled. This can be used alternatively to the Macro system, particularly if you come from Delphi.<br />
<br />
Spaces at start and end are removed. Line breaks are replaced by a space before passing to the compiler. A leading space is added automatically.<br />
<br />
The IDE substitutes IDE macros in custom options and parses the options. Flags like -dRelease are passed to codetools, so the source editor knows them immediately.<br />
<br />
{{Warning|Do not add the path options -Fu, -Fi, -Fl, -FU, -o. Use the fields on the page [[IDE_Window:_Compiler_Options#Paths|Paths]] instead. The IDE ignores the paths in the custom options. It does not update them, when you add or delete files or when you open the project on another host.}}<br />
<br />
Clicking the '''All options...''' button allows you to set FPC options easily:<br />
[[File:options.png]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Databases/de&diff=107303Databases/de2017-02-15T12:19:48Z<p>Arabidopsis: </p>
<hr />
<div>{{Databases}}<br />
<br />
Diese Seite ist noch unfertig ...<br />
<br />
{{Database Programming/de}}<br />
<br />
== Einleitung ==<br />
<br />
Wie bei anderen Entwicklungssystemen auch spielt die Zusammenarbeit mit verschiedenen Datenbanken bei Lazarus eine bedeutende Rolle. Während ein Teil der Funktionalität schon mit FPC zur Verfügung steht, kommen andere Teile (insbesondere die visuellen Komponenten) erst mit Lazarus selbst hinzu. Die bei Lazarus enthaltenen Komponenten decken schon ein gewisses Spektrum an Datenbanken ab. Da aber immer Verbesserungsbedarf besteht und es auch exotischere Datenbanken gibt, existieren externe Komponenten / Bibliotheken, die die Möglichkeiten von Lazarus erweitern. <br />
<br />
Diese Seite stellt einen Einstieg für das Thema 'Lazarus und Datenbanken' dar. Die folgende Tabelle bietet einen Überblick über die unterstützten Datenbanken. Da sie noch auf dem Stand von FPC 1.9.7 basiert, sollte sie schnellstens auf den aktuellen Stand gebracht werden. Ein Hinweis noch an alle Experimentierfreudigen: Installieren sie nur die Datenbank-Komponenten, deren Client-Bibliotheken (falls diese erforderlich sind) auf ihrem Computer installiert sind. Sonst kann es passieren, dass Lazarus den Start mit einer Fehlermeldung (wegen fehlender Dateien) verweigert. Da sie somit keine Möglichkeit mehr haben, die Komponenten zu deinstallieren, ist eine Neuinstallation von Lazarus erforderlich.<br />
<br />
=== Tabelle 1 ===<br />
{| class="wikitable sortable" BORDER="1" CELLSPACING="0"<br />
!STYLE="background:#ffdead;"|'''Datenbank'''<br />
!STYLE="background:#ffdead;"|'''Package Name'''<br />
!STYLE="background:#ffdead;"|'''Benötigt eine <br>Client Bibliothek?'''<br />
!STYLE="background:#ffdead;"|'''Benötigt Server?'''<br />
!STYLE="background:#ffdead;"|'''Unterstützte Versionen'''<br />
!STYLE="background:#ffdead;"|'''Unterstützte Plattformen'''<br />
|----<br />
|'''Textdateien'''||SDFLaz||Nein||Nein|| - || Alle<br />
|----<br />
|'''Im Speicher'''||MemDSLaz||Nein||Nein|| - || Alle<br />
|----<br />
|'''DBase'''||[[Lazarus_Tdbf_Tutorial/de | DBFLaz]]||Nein||Nein|| III+, IV, VII || Alle<br />
|----<br />
|'''FoxPro'''||[[Lazarus_Tdbf_Tutorial/de | DBFLaz]]||Nein||Nein|| 2.0, 2.5, 3.0 (nicht vollständig) || Alle<br />
|----<br />
|'''Paradox'''||[[TParadoxDataSet | TParadoxDataSet]]||Nein||Nein|| bis zu Version 7 (und höher ??) || Alle<br />
|----<br />
|[http://www.sqlite.org/ '''SQLite''']||SQLite||Ja||Nein|| 2.x, 3.x || Alle<br />
|----<br />
|[http://www.mysql.com/ '''MySQL''']||[[MySQLDatabases/de | SQLdb]]||Ja||Ja|| 3 - 5.5 || i386: Linux, Win32<br />
|----<br />
|[http://www.firebirdsql.org/ '''Firebird''']||IBase||Ja||Depends<sup>1)</sup>||1 - 2.5|| i386: Linux, Win32<br />
|----<br />
|[http://www.postgresql.org/ '''PostgreSQL''']||SQLdb||Ja||Ja|| 6.6 - 8 || i386: Linux, Win32<br />
|----<br />
|'''ODBC'''||[[ODBCConn|SQLdb]]||Ja||Depends|| 3.x <sup>2)</sup> || i386: Linux, Win32<br />
|----<br />
|[http://www.embarcadero.com/products/interbase-smp '''Interbase''']||IBase||Ja||Ja||4 - 6|| i386: Linux, Win32<br />
|----<br />
|[http://www.oracle.com/ '''Oracle''']||SQLdb||Ja||Ja|| - || - <br />
|----<br />
|[http://www.advantagedatabase.com/ '''Advantage''']||TAdsDataSet||Ja||Nein||10.1 und höher|| i386: Linux, Win32<br />
|}<br />
<br />
<sup>1)</sup> Sie können eine eingebettete Version von Firebird zumindest unter Windows benutzen (möglicherweise unter Linux/OSX mit einigen Verrenkungen), oder Sie nehmen eine Server-Version unter Windows/Unix/OSX/FreeBSD/anderen von Firebird unterstützen Plattformen<br />
<br />
<sup>2)</sup> Diese Versionsnummer bezieht sich auf den ODBC Standard, nicht auf die Versionsnummer eines Treibers oder Treibermanagers. Es gibt ODBC 3.x Treiber für die meisten DBMS.<br />
<br />
== Weitere Informationen zu Lazarus und Datenbanken ==<br />
<br />
* FAQ: [[Lazarus DB Faq/de|Lazarus Datenbank FAQ]]<br />
* Tutorial: [[Lazarus Database Tutorial/de|Lazarus Database Tutorial]]<br />
* MySQL: [[MySQLDatabases/de|MySQLDatabases]]<br />
* Firebird: [[Firebird]]<br />
* ODBC: [[ODBCConn]]<br />
<br />
== Unterschiede zu Delphi ==<br />
<br />
Der vielleicht wichtigste Vorteil von Lazarus gegenüber Delphi ist die Plattformunabhängigkeit. Das bedeutet auf der anderen Seite, dass es für die Windows-spezifischen Teile bei Delphi (z.B. die BDE) keine direkten Entsprechungen bei Lazarus gibt. Gleiches gilt für die meisten Reporting-Werkzeuge. Bei der Konvertierung eines Delphiprogramms nach Lazarus sollte man auf die verschiedenen Dateisysteme achten, wenn das Programm auf allen von Lazarus unterstützten Plattformen laufen soll. Als Beispiel möchte ich nur die unterschiedlichen Trennzeichen im Pfadnamen ( \ bzw. / ) nennen.<br />
<br />
== In Lazarus enthaltene Datenbank-Packages ==<br />
<br />
=== sqldblaz.lpk ===<br />
Dieses Package bietet Zugriff auf verschiedene Datenbanken (z.B. MySQL oder Interbase/Firebird). Das Package wird standardmäßig mit Lazarus installiert (unter Windows). Die Komponenten (TSQLQuery, TSQLTransaction, TIBConnection, TODBCConnection, TOracleConnection, TMySQL40Connection, TMySQL41Connection, TMySQL50Connection, TPQConnection) befinden sich auf der 'SQLdb' Seite in der Komponentenpalette.<br />
<br />
=== dbflaz.lpk ===<br />
Dieses Package bietet Zugriff auf dBase und FoxPro Datenbanken. Weitere Informationen bietet das [[Lazarus Tdbf Tutorial/de|Lazarus TDbf Tutorial]]. Das Package wird standardmäßig mit Lazarus installiert. Die Komponente TDbf befindet sich auf der 'Data Access' Seite in der Komponentenpalette.<br />
<br />
=== sqlitelaz.lpk ===<br />
Dieses Package bietet Zugriff auf SQLite Datenbanken. Weitere Informationen sind im [[Lazarus Database Tutorial/de|Lazarus Database Tutorial]] zu finden.<br />
<br />
=== sdflaz.lpk ===<br />
Das Package wird standardmäßig mit Lazarus installiert. Die Komponente TSdfDataSet befindet sich auf der 'Data Access' Seite in der Komponentenpalette.<br />
<br />
=== lazreport.lpk ===<br />
Mit LazReport enthält Lazarus auch einen Reportgenerator. Dieser basiert auf FreeReport 2.32. Zum Funktionieren von LazReport muss das Package Printer4Lazarus installiert sein.<br />
(Mit Revision 11950 wurde LazReport in das Lazarus SVN Repository übernommen.)<br />
<br />
==== lazreportpdfexport.lpk ====<br />
Dieses Package erweitert LazReport um die Möglichkeit, einen Report auch im PDF-Format exportieren zu können.<br />
<br />
== Externe Komponenten / Bibliotheken ==<br />
<br />
=== Zeos DataBase Objects ===<br />
Diese Komponenten bieten Zugriff auf verschiedene Datenbanken. Weitere Informationen finden sie [[ZeosDBO|hier]]. Es existiert auch ein [[Zeos tutorial/de|Zeos Tutorial]].<br />
<br />
=== Pascal Data Objects ===<br />
Die Pascal Data Objects sind von Zeoslib abgeleitet. Es werden die mit MySQL 4.1 und 5.0 eingeführten Funktionen wie prepared statements, binding, und stored procedures von der Datenbank-API namens Pascal Data Objects unterstützt, die durch die PHP Data Objects inspiriert wurde. Der für die Verwendung dieser neuen API notwendige Code und die Dokumentation sind bei Sourceforge zu finden:<br />
<br />
http://pdo.sourceforge.net<br />
<br />
Jan 30, 2007: PDO hat Treiber für Firebird 1.5 und Firebird 2.0 hinzugefügt<br />
<br />
--[[User:Jrmarino|Jrmarino]] 11:28, 13 Mar 2006 (CET)<br />
<br />
=== TPSQL ===<br />
Diese Komponenten bieten Zugriff mittels TCP/IP auf PostgreSQL Datenbanken. Weitere Informationen finden sie auf [[TPSQL/de|dieser Seite]].<br />
<br />
=== FIBL ===<br />
Diese Komponenten bieten Zugriff auf Interbase und Firebird Datenbanken. Die Homepage ist [http://sourceforge.net/projects/fibl http://sourceforge.net/projects/fibl].<br />
<br />
=== FBLib Firebird Library ===<br />
<br />
[http://fblib.altervista.org/ FBLib] ist eine Open Source Bibliothek (nicht datensensitiv) für direkten Zugriff auf die Firebird relationale Datenbank von Borland Delphi / Kylix, Free Pascal und Lazarus aus. Für die meisten Benutzer dürfte es gewöhnungsbedürftig sein, dass hier nicht die übliche Anbindung über TDatasource erfolgt.<br />
<br />
Gegenwärtig sind folgende Features enthalten:<br />
<br />
* Direkter Zugriff auf Firebird 1.0.x, 1.5.x und 2.x Classic oder SuperServer<br />
* Multiplattform [Win32,Gnu/Linux,FreeBSD)<br />
* Automatische Auswahl der Client Bibliothek 'fbclient' oder 'gds32'<br />
* Abfragen (Queries) mit Parametern<br />
* Unterstützt SQL Dialekt 1/3<br />
* LGPL Lizenzvertrag<br />
* Extrahieren von Metadaten<br />
* Simple Script Parser<br />
* Nur 100-150 KB werden zur finalen EXE hinzugefügt<br />
* Unterstützt BLOB Felder<br />
* Export von Daten als HTML SQL Script<br />
* Service manager (backup, restore, gfix...)<br />
* Events Alerter<br />
<br />
Sie können die Dokumentation von der [http://fblib.altervista.org/|FBLib Webseite] herunterladen.<br />
<br />
=== Unified Interbase ===<br />
<br />
UIB bietet Zugriff auf Interbase, Firebird und YAFFIL Datenbanken. Die Homepage ist [http://www.progdigy.com www.progdigy.com]. Ein SVN-Repository ist verfügbar unter https://uib.svn.sourceforge.net/svnroot/uib .<br />
<br />
=== TechInsite Object Persistence Framework (tiOPF) ===<br />
Nähere Informationen zu tiOPF sind auf dieser [[tiOPF/de|Seite]] zu finden.<br />
<br />
=== Advantage TDataSet Descendant ===<br />
Der Advantage TDataSet Descendant bietet ein Mittel für Verbindungen (und Öffnen von Tabellen) mit dem Advantage Database Server. Advantage ist eine flexible, administrations-freie eingebettete Datenbank, die den Zugriff als Client/Server oder als Peer-to-peer auf die Dateiformate Clipper, FoxPro und Visual FoxPro 9 ermöglicht. Ebenso wie auf das eigene Dateiformat, das einen Migrationpfad darstellt, der es erlaubt, neuere Features zu verwenden.<br />
<br />
Wichtigste Features:<br />
* Gebührenfreier Peer-to-peer - Datenbankzugriff mit Migrationspfad zu Client/Server<br />
* Multi-Platform (Clients unterstützt unter Windows und Linux, Server unterstützt unter Windows, Linux und NetWare)<br />
* Unterstützt sowohl navigationalen als auch relationalen SQL-Datenbankzugriff<br />
* Volltext-Suchmaschine<br />
* Tabellen-, Index-, Memo- und Kommunikationsverschlüsselung<br />
* Kompatibel mit den originalen TDataset-Komponenten<br />
* Online-Backup<br />
* Server unterstützt Replikation<br />
<br />
Für weitere Informationen, siehe die [http://www.advantagedatabase.com Advantage Database Server] Website.<br />
<br />
== Gängige Stolperfallen für Einsteiger / Hinweise zur Fehlersuche ==<br />
=== Fehlermeldung "Operation cannot be performed in an inactive dataset" bei Nachschlagefeldern ===<br />
* Man stelle zunächst sicher, daß das Unit der DataModule vor der des Anwendungsformulars aktiviert wird. Hierzu editiert man die '''projectX.lpr''' und bringt die Create-Zeilen in passende Reihenfolge:<br />
begin<br />
RequireDerivedFormResource:=True;<br />
Application.Initialize;<br />
Application.CreateForm(TDataModule1, DataModule1); //Erst das DataModule!<br />
Application.CreateForm(TForm1, Form1);<br />
Application.Run;<br />
end.<br />
<br />
* Das Problem kann immer noch auftreten, falls das Dataset der Haupttabelle vor dem Datset der Nachschlagetabelle aktiviert wird. Es ließe sich auf "visuelle" Weise nur verhindern, wenn der Designer eine Möglichkeit böte, die '''Erstellungsreihenfolge ("Creation Order")''' der Komponenten zu definieren. Anders als Delphi bietet Lazarus derzeit (Stand 2017-02) diese Möglichkeit noch nicht.<br />
<br />
Abhilfe ist trotzdem einfach: <br />
* Vor dem Kompilieren muß man alle Connections im Designer trennen (disconnect). Damit werden auch alle Datasets implizt deaktiviert.<br />
* An geeigneter Stelle [z.B. in .DataModuleCreate des DataModuls oder bei einer nicht lokalen Datenbank noch besser in einer vorgeschalteten Loginprozedur, welche die korrekte Anmeldung und Verbindung zur Datenbank sicherstellt] aktiviert man sie wieder, und im Anschluß lassen sich die Datasets in sinnvoller, definierter Reihenfolge aktiv schalten:<br />
<br />
DataModule1.ZConInventory.Connect;<br />
//Aktivieren der Datasets: Lookup-Datasets zuerst!<br />
DataModule1.ztNachschlagetabelle.Active := True;<br />
DataModule1.ztHaupttabelle.Active := True;<br />
DataModule1.(...)<br />
<br />
== Siehe auch ==<br />
<br />
* [[Lazarus DB Faq]]<br />
<br />
[[Category:Databases/de]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Databases/de&diff=107298Databases/de2017-02-15T09:30:03Z<p>Arabidopsis: /* Gängige Stoperfallen für Einsteiger und Hinweise zur Fehlersuche */</p>
<hr />
<div>{{Databases}}<br />
<br />
Diese Seite ist noch unfertig ...<br />
<br />
{{Database Programming/de}}<br />
<br />
== Einleitung ==<br />
<br />
Wie bei anderen Entwicklungssystemen auch spielt die Zusammenarbeit mit verschiedenen Datenbanken bei Lazarus eine bedeutende Rolle. Während ein Teil der Funktionalität schon mit FPC zur Verfügung steht, kommen andere Teile (insbesondere die visuellen Komponenten) erst mit Lazarus selbst hinzu. Die bei Lazarus enthaltenen Komponenten decken schon ein gewisses Spektrum an Datenbanken ab. Da aber immer Verbesserungsbedarf besteht und es auch exotischere Datenbanken gibt, existieren externe Komponenten / Bibliotheken, die die Möglichkeiten von Lazarus erweitern. <br />
<br />
Diese Seite stellt einen Einstieg für das Thema 'Lazarus und Datenbanken' dar. Die folgende Tabelle bietet einen Überblick über die unterstützten Datenbanken. Da sie noch auf dem Stand von FPC 1.9.7 basiert, sollte sie schnellstens auf den aktuellen Stand gebracht werden. Ein Hinweis noch an alle Experimentierfreudigen: Installieren sie nur die Datenbank-Komponenten, deren Client-Bibliotheken (falls diese erforderlich sind) auf ihrem Computer installiert sind. Sonst kann es passieren, dass Lazarus den Start mit einer Fehlermeldung (wegen fehlender Dateien) verweigert. Da sie somit keine Möglichkeit mehr haben, die Komponenten zu deinstallieren, ist eine Neuinstallation von Lazarus erforderlich.<br />
<br />
=== Tabelle 1 ===<br />
{| class="wikitable sortable" BORDER="1" CELLSPACING="0"<br />
!STYLE="background:#ffdead;"|'''Datenbank'''<br />
!STYLE="background:#ffdead;"|'''Package Name'''<br />
!STYLE="background:#ffdead;"|'''Benötigt eine <br>Client Bibliothek?'''<br />
!STYLE="background:#ffdead;"|'''Benötigt Server?'''<br />
!STYLE="background:#ffdead;"|'''Unterstützte Versionen'''<br />
!STYLE="background:#ffdead;"|'''Unterstützte Plattformen'''<br />
|----<br />
|'''Textdateien'''||SDFLaz||Nein||Nein|| - || Alle<br />
|----<br />
|'''Im Speicher'''||MemDSLaz||Nein||Nein|| - || Alle<br />
|----<br />
|'''DBase'''||[[Lazarus_Tdbf_Tutorial/de | DBFLaz]]||Nein||Nein|| III+, IV, VII || Alle<br />
|----<br />
|'''FoxPro'''||[[Lazarus_Tdbf_Tutorial/de | DBFLaz]]||Nein||Nein|| 2.0, 2.5, 3.0 (nicht vollständig) || Alle<br />
|----<br />
|'''Paradox'''||[[TParadoxDataSet | TParadoxDataSet]]||Nein||Nein|| bis zu Version 7 (und höher ??) || Alle<br />
|----<br />
|[http://www.sqlite.org/ '''SQLite''']||SQLite||Ja||Nein|| 2.x, 3.x || Alle<br />
|----<br />
|[http://www.mysql.com/ '''MySQL''']||[[MySQLDatabases/de | SQLdb]]||Ja||Ja|| 3 - 5.5 || i386: Linux, Win32<br />
|----<br />
|[http://www.firebirdsql.org/ '''Firebird''']||IBase||Ja||Depends<sup>1)</sup>||1 - 2.5|| i386: Linux, Win32<br />
|----<br />
|[http://www.postgresql.org/ '''PostgreSQL''']||SQLdb||Ja||Ja|| 6.6 - 8 || i386: Linux, Win32<br />
|----<br />
|'''ODBC'''||[[ODBCConn|SQLdb]]||Ja||Depends|| 3.x <sup>2)</sup> || i386: Linux, Win32<br />
|----<br />
|[http://www.embarcadero.com/products/interbase-smp '''Interbase''']||IBase||Ja||Ja||4 - 6|| i386: Linux, Win32<br />
|----<br />
|[http://www.oracle.com/ '''Oracle''']||SQLdb||Ja||Ja|| - || - <br />
|----<br />
|[http://www.advantagedatabase.com/ '''Advantage''']||TAdsDataSet||Ja||Nein||10.1 und höher|| i386: Linux, Win32<br />
|}<br />
<br />
<sup>1)</sup> Sie können eine eingebettete Version von Firebird zumindest unter Windows benutzen (möglicherweise unter Linux/OSX mit einigen Verrenkungen), oder Sie nehmen eine Server-Version unter Windows/Unix/OSX/FreeBSD/anderen von Firebird unterstützen Plattformen<br />
<br />
<sup>2)</sup> Diese Versionsnummer bezieht sich auf den ODBC Standard, nicht auf die Versionsnummer eines Treibers oder Treibermanagers. Es gibt ODBC 3.x Treiber für die meisten DBMS.<br />
<br />
== Weitere Informationen zu Lazarus und Datenbanken ==<br />
<br />
* FAQ: [[Lazarus DB Faq/de|Lazarus Datenbank FAQ]]<br />
* Tutorial: [[Lazarus Database Tutorial/de|Lazarus Database Tutorial]]<br />
* MySQL: [[MySQLDatabases/de|MySQLDatabases]]<br />
* Firebird: [[Firebird]]<br />
* ODBC: [[ODBCConn]]<br />
<br />
== Unterschiede zu Delphi ==<br />
<br />
Der vielleicht wichtigste Vorteil von Lazarus gegenüber Delphi ist die Plattformunabhängigkeit. Das bedeutet auf der anderen Seite, dass es für die Windows-spezifischen Teile bei Delphi (z.B. die BDE) keine direkten Entsprechungen bei Lazarus gibt. Gleiches gilt für die meisten Reporting-Werkzeuge. Bei der Konvertierung eines Delphiprogramms nach Lazarus sollte man auf die verschiedenen Dateisysteme achten, wenn das Programm auf allen von Lazarus unterstützten Plattformen laufen soll. Als Beispiel möchte ich nur die unterschiedlichen Trennzeichen im Pfadnamen ( \ bzw. / ) nennen.<br />
<br />
== In Lazarus enthaltene Datenbank-Packages ==<br />
<br />
=== sqldblaz.lpk ===<br />
Dieses Package bietet Zugriff auf verschiedene Datenbanken (z.B. MySQL oder Interbase/Firebird). Das Package wird standardmäßig mit Lazarus installiert (unter Windows). Die Komponenten (TSQLQuery, TSQLTransaction, TIBConnection, TODBCConnection, TOracleConnection, TMySQL40Connection, TMySQL41Connection, TMySQL50Connection, TPQConnection) befinden sich auf der 'SQLdb' Seite in der Komponentenpalette.<br />
<br />
=== dbflaz.lpk ===<br />
Dieses Package bietet Zugriff auf dBase und FoxPro Datenbanken. Weitere Informationen bietet das [[Lazarus Tdbf Tutorial/de|Lazarus TDbf Tutorial]]. Das Package wird standardmäßig mit Lazarus installiert. Die Komponente TDbf befindet sich auf der 'Data Access' Seite in der Komponentenpalette.<br />
<br />
=== sqlitelaz.lpk ===<br />
Dieses Package bietet Zugriff auf SQLite Datenbanken. Weitere Informationen sind im [[Lazarus Database Tutorial/de|Lazarus Database Tutorial]] zu finden.<br />
<br />
=== sdflaz.lpk ===<br />
Das Package wird standardmäßig mit Lazarus installiert. Die Komponente TSdfDataSet befindet sich auf der 'Data Access' Seite in der Komponentenpalette.<br />
<br />
=== lazreport.lpk ===<br />
Mit LazReport enthält Lazarus auch einen Reportgenerator. Dieser basiert auf FreeReport 2.32. Zum Funktionieren von LazReport muss das Package Printer4Lazarus installiert sein.<br />
(Mit Revision 11950 wurde LazReport in das Lazarus SVN Repository übernommen.)<br />
<br />
==== lazreportpdfexport.lpk ====<br />
Dieses Package erweitert LazReport um die Möglichkeit, einen Report auch im PDF-Format exportieren zu können.<br />
<br />
== Externe Komponenten / Bibliotheken ==<br />
<br />
=== Zeos DataBase Objects ===<br />
Diese Komponenten bieten Zugriff auf verschiedene Datenbanken. Weitere Informationen finden sie [[ZeosDBO|hier]]. Es existiert auch ein [[Zeos tutorial/de|Zeos Tutorial]].<br />
<br />
=== Pascal Data Objects ===<br />
Die Pascal Data Objects sind von Zeoslib abgeleitet. Es werden die mit MySQL 4.1 und 5.0 eingeführten Funktionen wie prepared statements, binding, und stored procedures von der Datenbank-API namens Pascal Data Objects unterstützt, die durch die PHP Data Objects inspiriert wurde. Der für die Verwendung dieser neuen API notwendige Code und die Dokumentation sind bei Sourceforge zu finden:<br />
<br />
http://pdo.sourceforge.net<br />
<br />
Jan 30, 2007: PDO hat Treiber für Firebird 1.5 und Firebird 2.0 hinzugefügt<br />
<br />
--[[User:Jrmarino|Jrmarino]] 11:28, 13 Mar 2006 (CET)<br />
<br />
=== TPSQL ===<br />
Diese Komponenten bieten Zugriff mittels TCP/IP auf PostgreSQL Datenbanken. Weitere Informationen finden sie auf [[TPSQL/de|dieser Seite]].<br />
<br />
=== FIBL ===<br />
Diese Komponenten bieten Zugriff auf Interbase und Firebird Datenbanken. Die Homepage ist [http://sourceforge.net/projects/fibl http://sourceforge.net/projects/fibl].<br />
<br />
=== FBLib Firebird Library ===<br />
<br />
[http://fblib.altervista.org/ FBLib] ist eine Open Source Bibliothek (nicht datensensitiv) für direkten Zugriff auf die Firebird relationale Datenbank von Borland Delphi / Kylix, Free Pascal und Lazarus aus. Für die meisten Benutzer dürfte es gewöhnungsbedürftig sein, dass hier nicht die übliche Anbindung über TDatasource erfolgt.<br />
<br />
Gegenwärtig sind folgende Features enthalten:<br />
<br />
* Direkter Zugriff auf Firebird 1.0.x, 1.5.x und 2.x Classic oder SuperServer<br />
* Multiplattform [Win32,Gnu/Linux,FreeBSD)<br />
* Automatische Auswahl der Client Bibliothek 'fbclient' oder 'gds32'<br />
* Abfragen (Queries) mit Parametern<br />
* Unterstützt SQL Dialekt 1/3<br />
* LGPL Lizenzvertrag<br />
* Extrahieren von Metadaten<br />
* Simple Script Parser<br />
* Nur 100-150 KB werden zur finalen EXE hinzugefügt<br />
* Unterstützt BLOB Felder<br />
* Export von Daten als HTML SQL Script<br />
* Service manager (backup, restore, gfix...)<br />
* Events Alerter<br />
<br />
Sie können die Dokumentation von der [http://fblib.altervista.org/|FBLib Webseite] herunterladen.<br />
<br />
=== Unified Interbase ===<br />
<br />
UIB bietet Zugriff auf Interbase, Firebird und YAFFIL Datenbanken. Die Homepage ist [http://www.progdigy.com www.progdigy.com]. Ein SVN-Repository ist verfügbar unter https://uib.svn.sourceforge.net/svnroot/uib .<br />
<br />
=== TechInsite Object Persistence Framework (tiOPF) ===<br />
Nähere Informationen zu tiOPF sind auf dieser [[tiOPF/de|Seite]] zu finden.<br />
<br />
=== Advantage TDataSet Descendant ===<br />
Der Advantage TDataSet Descendant bietet ein Mittel für Verbindungen (und Öffnen von Tabellen) mit dem Advantage Database Server. Advantage ist eine flexible, administrations-freie eingebettete Datenbank, die den Zugriff als Client/Server oder als Peer-to-peer auf die Dateiformate Clipper, FoxPro und Visual FoxPro 9 ermöglicht. Ebenso wie auf das eigene Dateiformat, das einen Migrationpfad darstellt, der es erlaubt, neuere Features zu verwenden.<br />
<br />
Wichtigste Features:<br />
* Gebührenfreier Peer-to-peer - Datenbankzugriff mit Migrationspfad zu Client/Server<br />
* Multi-Platform (Clients unterstützt unter Windows und Linux, Server unterstützt unter Windows, Linux und NetWare)<br />
* Unterstützt sowohl navigationalen als auch relationalen SQL-Datenbankzugriff<br />
* Volltext-Suchmaschine<br />
* Tabellen-, Index-, Memo- und Kommunikationsverschlüsselung<br />
* Kompatibel mit den originalen TDataset-Komponenten<br />
* Online-Backup<br />
* Server unterstützt Replikation<br />
<br />
Für weitere Informationen, siehe die [http://www.advantagedatabase.com Advantage Database Server] Website.<br />
<br />
== Gängige Stolperfallen für Einsteiger / Hinweise zur Fehlersuche ==<br />
=== Fehlermeldung "Operation cannot be performed in an inactive dataset" bei Nachschlagefeldern ===<br />
* Man stelle zunächst sicher, daß das Unit der DataModule vor der des Anwendungsformulars aktiviert wird. Hierzu editiert man die '''projectX.lpr''' und bringt die Create-Zeilen in passende Reihenfolge:<br />
begin<br />
RequireDerivedFormResource:=True;<br />
Application.Initialize;<br />
Application.CreateForm(TDataModule1, DataModule1); //Erst das DataModule!<br />
Application.CreateForm(TForm1, Form1);<br />
Application.Run;<br />
end.<br />
<br />
* Das Problem kann immer noch auftreten, falls das Dataset der Haupttabelle vor dem Datset der Nachschlagetabelle aktiviert wird. Es ließe sich auf "visuelle" Weise nur verhindern, wenn der Designer eine Möglichkeit böte, die '''Erstellungsreihenfolge ("Creation Order")''' der Komponenten zu definieren. Anders als Delphi bietet Lazarus derzeit (Stand 2017-02) diese Möglichkeit noch nicht.<br />
<br />
Abhilfe ist trotzdem einfach: Zur Laufzeit kann man das Deaktivieren ''sämtlicher'' daran gebundenen Datasets sicherstellen, wenn man an geeigneter Stelle [z.B. in .FormCreate oder bei einer nicht lokalen Datenbank noch besser in einer vorgeschalteten Loginprozedur, welche die korrekte Anmeldung und Verbindung zur Datenbank sicherstellt, ehe die eigentliche Anwendung startet] die Connection deaktiviert. Daraufhin aktiviert man sie (wieder), und im Anschluß lassen sich die Datasets in sinnvoller, definierter Reihenfolge aktiv schalten:<br />
<br />
// Setzt alle etwaig aktiven Datasets inaktiv:<br />
DataModule1.ZConInventory.Disconnect;<br />
DataModule1.ZConInventory.Connect;<br />
//Aktivieren der Datasets: Lookup-Datasets zuerst!<br />
DataModule1.ztNachschlagetabelle.Active := True;<br />
DataModule1.ztHaupttabelle.Active := True;<br />
DataModule1.(...)<br />
<br />
== Siehe auch ==<br />
<br />
* [[Lazarus DB Faq]]<br />
<br />
[[Category:Databases/de]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Databases/de&diff=107297Databases/de2017-02-15T09:28:28Z<p>Arabidopsis: /* Fehlermeldung "Operation cannot be performed in an inactive dataset" bei Nachschlagefeldern */</p>
<hr />
<div>{{Databases}}<br />
<br />
Diese Seite ist noch unfertig ...<br />
<br />
{{Database Programming/de}}<br />
<br />
== Einleitung ==<br />
<br />
Wie bei anderen Entwicklungssystemen auch spielt die Zusammenarbeit mit verschiedenen Datenbanken bei Lazarus eine bedeutende Rolle. Während ein Teil der Funktionalität schon mit FPC zur Verfügung steht, kommen andere Teile (insbesondere die visuellen Komponenten) erst mit Lazarus selbst hinzu. Die bei Lazarus enthaltenen Komponenten decken schon ein gewisses Spektrum an Datenbanken ab. Da aber immer Verbesserungsbedarf besteht und es auch exotischere Datenbanken gibt, existieren externe Komponenten / Bibliotheken, die die Möglichkeiten von Lazarus erweitern. <br />
<br />
Diese Seite stellt einen Einstieg für das Thema 'Lazarus und Datenbanken' dar. Die folgende Tabelle bietet einen Überblick über die unterstützten Datenbanken. Da sie noch auf dem Stand von FPC 1.9.7 basiert, sollte sie schnellstens auf den aktuellen Stand gebracht werden. Ein Hinweis noch an alle Experimentierfreudigen: Installieren sie nur die Datenbank-Komponenten, deren Client-Bibliotheken (falls diese erforderlich sind) auf ihrem Computer installiert sind. Sonst kann es passieren, dass Lazarus den Start mit einer Fehlermeldung (wegen fehlender Dateien) verweigert. Da sie somit keine Möglichkeit mehr haben, die Komponenten zu deinstallieren, ist eine Neuinstallation von Lazarus erforderlich.<br />
<br />
=== Tabelle 1 ===<br />
{| class="wikitable sortable" BORDER="1" CELLSPACING="0"<br />
!STYLE="background:#ffdead;"|'''Datenbank'''<br />
!STYLE="background:#ffdead;"|'''Package Name'''<br />
!STYLE="background:#ffdead;"|'''Benötigt eine <br>Client Bibliothek?'''<br />
!STYLE="background:#ffdead;"|'''Benötigt Server?'''<br />
!STYLE="background:#ffdead;"|'''Unterstützte Versionen'''<br />
!STYLE="background:#ffdead;"|'''Unterstützte Plattformen'''<br />
|----<br />
|'''Textdateien'''||SDFLaz||Nein||Nein|| - || Alle<br />
|----<br />
|'''Im Speicher'''||MemDSLaz||Nein||Nein|| - || Alle<br />
|----<br />
|'''DBase'''||[[Lazarus_Tdbf_Tutorial/de | DBFLaz]]||Nein||Nein|| III+, IV, VII || Alle<br />
|----<br />
|'''FoxPro'''||[[Lazarus_Tdbf_Tutorial/de | DBFLaz]]||Nein||Nein|| 2.0, 2.5, 3.0 (nicht vollständig) || Alle<br />
|----<br />
|'''Paradox'''||[[TParadoxDataSet | TParadoxDataSet]]||Nein||Nein|| bis zu Version 7 (und höher ??) || Alle<br />
|----<br />
|[http://www.sqlite.org/ '''SQLite''']||SQLite||Ja||Nein|| 2.x, 3.x || Alle<br />
|----<br />
|[http://www.mysql.com/ '''MySQL''']||[[MySQLDatabases/de | SQLdb]]||Ja||Ja|| 3 - 5.5 || i386: Linux, Win32<br />
|----<br />
|[http://www.firebirdsql.org/ '''Firebird''']||IBase||Ja||Depends<sup>1)</sup>||1 - 2.5|| i386: Linux, Win32<br />
|----<br />
|[http://www.postgresql.org/ '''PostgreSQL''']||SQLdb||Ja||Ja|| 6.6 - 8 || i386: Linux, Win32<br />
|----<br />
|'''ODBC'''||[[ODBCConn|SQLdb]]||Ja||Depends|| 3.x <sup>2)</sup> || i386: Linux, Win32<br />
|----<br />
|[http://www.embarcadero.com/products/interbase-smp '''Interbase''']||IBase||Ja||Ja||4 - 6|| i386: Linux, Win32<br />
|----<br />
|[http://www.oracle.com/ '''Oracle''']||SQLdb||Ja||Ja|| - || - <br />
|----<br />
|[http://www.advantagedatabase.com/ '''Advantage''']||TAdsDataSet||Ja||Nein||10.1 und höher|| i386: Linux, Win32<br />
|}<br />
<br />
<sup>1)</sup> Sie können eine eingebettete Version von Firebird zumindest unter Windows benutzen (möglicherweise unter Linux/OSX mit einigen Verrenkungen), oder Sie nehmen eine Server-Version unter Windows/Unix/OSX/FreeBSD/anderen von Firebird unterstützen Plattformen<br />
<br />
<sup>2)</sup> Diese Versionsnummer bezieht sich auf den ODBC Standard, nicht auf die Versionsnummer eines Treibers oder Treibermanagers. Es gibt ODBC 3.x Treiber für die meisten DBMS.<br />
<br />
== Weitere Informationen zu Lazarus und Datenbanken ==<br />
<br />
* FAQ: [[Lazarus DB Faq/de|Lazarus Datenbank FAQ]]<br />
* Tutorial: [[Lazarus Database Tutorial/de|Lazarus Database Tutorial]]<br />
* MySQL: [[MySQLDatabases/de|MySQLDatabases]]<br />
* Firebird: [[Firebird]]<br />
* ODBC: [[ODBCConn]]<br />
<br />
== Unterschiede zu Delphi ==<br />
<br />
Der vielleicht wichtigste Vorteil von Lazarus gegenüber Delphi ist die Plattformunabhängigkeit. Das bedeutet auf der anderen Seite, dass es für die Windows-spezifischen Teile bei Delphi (z.B. die BDE) keine direkten Entsprechungen bei Lazarus gibt. Gleiches gilt für die meisten Reporting-Werkzeuge. Bei der Konvertierung eines Delphiprogramms nach Lazarus sollte man auf die verschiedenen Dateisysteme achten, wenn das Programm auf allen von Lazarus unterstützten Plattformen laufen soll. Als Beispiel möchte ich nur die unterschiedlichen Trennzeichen im Pfadnamen ( \ bzw. / ) nennen.<br />
<br />
== In Lazarus enthaltene Datenbank-Packages ==<br />
<br />
=== sqldblaz.lpk ===<br />
Dieses Package bietet Zugriff auf verschiedene Datenbanken (z.B. MySQL oder Interbase/Firebird). Das Package wird standardmäßig mit Lazarus installiert (unter Windows). Die Komponenten (TSQLQuery, TSQLTransaction, TIBConnection, TODBCConnection, TOracleConnection, TMySQL40Connection, TMySQL41Connection, TMySQL50Connection, TPQConnection) befinden sich auf der 'SQLdb' Seite in der Komponentenpalette.<br />
<br />
=== dbflaz.lpk ===<br />
Dieses Package bietet Zugriff auf dBase und FoxPro Datenbanken. Weitere Informationen bietet das [[Lazarus Tdbf Tutorial/de|Lazarus TDbf Tutorial]]. Das Package wird standardmäßig mit Lazarus installiert. Die Komponente TDbf befindet sich auf der 'Data Access' Seite in der Komponentenpalette.<br />
<br />
=== sqlitelaz.lpk ===<br />
Dieses Package bietet Zugriff auf SQLite Datenbanken. Weitere Informationen sind im [[Lazarus Database Tutorial/de|Lazarus Database Tutorial]] zu finden.<br />
<br />
=== sdflaz.lpk ===<br />
Das Package wird standardmäßig mit Lazarus installiert. Die Komponente TSdfDataSet befindet sich auf der 'Data Access' Seite in der Komponentenpalette.<br />
<br />
=== lazreport.lpk ===<br />
Mit LazReport enthält Lazarus auch einen Reportgenerator. Dieser basiert auf FreeReport 2.32. Zum Funktionieren von LazReport muss das Package Printer4Lazarus installiert sein.<br />
(Mit Revision 11950 wurde LazReport in das Lazarus SVN Repository übernommen.)<br />
<br />
==== lazreportpdfexport.lpk ====<br />
Dieses Package erweitert LazReport um die Möglichkeit, einen Report auch im PDF-Format exportieren zu können.<br />
<br />
== Externe Komponenten / Bibliotheken ==<br />
<br />
=== Zeos DataBase Objects ===<br />
Diese Komponenten bieten Zugriff auf verschiedene Datenbanken. Weitere Informationen finden sie [[ZeosDBO|hier]]. Es existiert auch ein [[Zeos tutorial/de|Zeos Tutorial]].<br />
<br />
=== Pascal Data Objects ===<br />
Die Pascal Data Objects sind von Zeoslib abgeleitet. Es werden die mit MySQL 4.1 und 5.0 eingeführten Funktionen wie prepared statements, binding, und stored procedures von der Datenbank-API namens Pascal Data Objects unterstützt, die durch die PHP Data Objects inspiriert wurde. Der für die Verwendung dieser neuen API notwendige Code und die Dokumentation sind bei Sourceforge zu finden:<br />
<br />
http://pdo.sourceforge.net<br />
<br />
Jan 30, 2007: PDO hat Treiber für Firebird 1.5 und Firebird 2.0 hinzugefügt<br />
<br />
--[[User:Jrmarino|Jrmarino]] 11:28, 13 Mar 2006 (CET)<br />
<br />
=== TPSQL ===<br />
Diese Komponenten bieten Zugriff mittels TCP/IP auf PostgreSQL Datenbanken. Weitere Informationen finden sie auf [[TPSQL/de|dieser Seite]].<br />
<br />
=== FIBL ===<br />
Diese Komponenten bieten Zugriff auf Interbase und Firebird Datenbanken. Die Homepage ist [http://sourceforge.net/projects/fibl http://sourceforge.net/projects/fibl].<br />
<br />
=== FBLib Firebird Library ===<br />
<br />
[http://fblib.altervista.org/ FBLib] ist eine Open Source Bibliothek (nicht datensensitiv) für direkten Zugriff auf die Firebird relationale Datenbank von Borland Delphi / Kylix, Free Pascal und Lazarus aus. Für die meisten Benutzer dürfte es gewöhnungsbedürftig sein, dass hier nicht die übliche Anbindung über TDatasource erfolgt.<br />
<br />
Gegenwärtig sind folgende Features enthalten:<br />
<br />
* Direkter Zugriff auf Firebird 1.0.x, 1.5.x und 2.x Classic oder SuperServer<br />
* Multiplattform [Win32,Gnu/Linux,FreeBSD)<br />
* Automatische Auswahl der Client Bibliothek 'fbclient' oder 'gds32'<br />
* Abfragen (Queries) mit Parametern<br />
* Unterstützt SQL Dialekt 1/3<br />
* LGPL Lizenzvertrag<br />
* Extrahieren von Metadaten<br />
* Simple Script Parser<br />
* Nur 100-150 KB werden zur finalen EXE hinzugefügt<br />
* Unterstützt BLOB Felder<br />
* Export von Daten als HTML SQL Script<br />
* Service manager (backup, restore, gfix...)<br />
* Events Alerter<br />
<br />
Sie können die Dokumentation von der [http://fblib.altervista.org/|FBLib Webseite] herunterladen.<br />
<br />
=== Unified Interbase ===<br />
<br />
UIB bietet Zugriff auf Interbase, Firebird und YAFFIL Datenbanken. Die Homepage ist [http://www.progdigy.com www.progdigy.com]. Ein SVN-Repository ist verfügbar unter https://uib.svn.sourceforge.net/svnroot/uib .<br />
<br />
=== TechInsite Object Persistence Framework (tiOPF) ===<br />
Nähere Informationen zu tiOPF sind auf dieser [[tiOPF/de|Seite]] zu finden.<br />
<br />
=== Advantage TDataSet Descendant ===<br />
Der Advantage TDataSet Descendant bietet ein Mittel für Verbindungen (und Öffnen von Tabellen) mit dem Advantage Database Server. Advantage ist eine flexible, administrations-freie eingebettete Datenbank, die den Zugriff als Client/Server oder als Peer-to-peer auf die Dateiformate Clipper, FoxPro und Visual FoxPro 9 ermöglicht. Ebenso wie auf das eigene Dateiformat, das einen Migrationpfad darstellt, der es erlaubt, neuere Features zu verwenden.<br />
<br />
Wichtigste Features:<br />
* Gebührenfreier Peer-to-peer - Datenbankzugriff mit Migrationspfad zu Client/Server<br />
* Multi-Platform (Clients unterstützt unter Windows und Linux, Server unterstützt unter Windows, Linux und NetWare)<br />
* Unterstützt sowohl navigationalen als auch relationalen SQL-Datenbankzugriff<br />
* Volltext-Suchmaschine<br />
* Tabellen-, Index-, Memo- und Kommunikationsverschlüsselung<br />
* Kompatibel mit den originalen TDataset-Komponenten<br />
* Online-Backup<br />
* Server unterstützt Replikation<br />
<br />
Für weitere Informationen, siehe die [http://www.advantagedatabase.com Advantage Database Server] Website.<br />
<br />
== Gängige Stoperfallen für Einsteiger und Hinweise zur Fehlersuche ==<br />
=== Fehlermeldung "Operation cannot be performed in an inactive dataset" bei Nachschlagefeldern ===<br />
* Man stelle zunächst sicher, daß das Unit der DataModule vor der des Anwendungsformulars aktiviert wird. Hierzu editiert man die '''projectX.lpr''' und bringt die Create-Zeilen in passende Reihenfolge:<br />
begin<br />
RequireDerivedFormResource:=True;<br />
Application.Initialize;<br />
Application.CreateForm(TDataModule1, DataModule1); //Erst das DataModule!<br />
Application.CreateForm(TForm1, Form1);<br />
Application.Run;<br />
end.<br />
<br />
* Das Problem kann immer noch auftreten, falls das Dataset der Haupttabelle vor dem Datset der Nachschlagetabelle aktiviert wird. Es ließe sich auf "visuelle" Weise nur verhindern, wenn der Designer eine Möglichkeit böte, die '''Erstellungsreihenfolge ("Creation Order")''' der Komponenten zu definieren. Anders als Delphi bietet Lazarus derzeit (Stand 2017-02) diese Möglichkeit noch nicht.<br />
<br />
Abhilfe ist trotzdem einfach: Zur Laufzeit kann man das Deaktivieren ''sämtlicher'' daran gebundenen Datasets sicherstellen, wenn man an geeigneter Stelle [z.B. in .FormCreate oder bei einer nicht lokalen Datenbank noch besser in einer vorgeschalteten Loginprozedur, welche die korrekte Anmeldung und Verbindung zur Datenbank sicherstellt, ehe die eigentliche Anwendung startet] die Connection deaktiviert. Daraufhin aktiviert man sie (wieder), und im Anschluß lassen sich die Datasets in sinnvoller, definierter Reihenfolge aktiv schalten:<br />
<br />
// Setzt alle etwaig aktiven Datasets inaktiv:<br />
DataModule1.ZConInventory.Disconnect;<br />
DataModule1.ZConInventory.Connect;<br />
//Aktivieren der Datasets: Lookup-Datasets zuerst!<br />
DataModule1.ztNachschlagetabelle.Active := True;<br />
DataModule1.ztHaupttabelle.Active := True;<br />
DataModule1.(...)<br />
<br />
== Siehe auch ==<br />
<br />
* [[Lazarus DB Faq]]<br />
<br />
[[Category:Databases/de]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Databases/de&diff=107296Databases/de2017-02-15T09:21:32Z<p>Arabidopsis: Hinweise auf gängige Fehlerursachen für Einsteiger</p>
<hr />
<div>{{Databases}}<br />
<br />
Diese Seite ist noch unfertig ...<br />
<br />
{{Database Programming/de}}<br />
<br />
== Einleitung ==<br />
<br />
Wie bei anderen Entwicklungssystemen auch spielt die Zusammenarbeit mit verschiedenen Datenbanken bei Lazarus eine bedeutende Rolle. Während ein Teil der Funktionalität schon mit FPC zur Verfügung steht, kommen andere Teile (insbesondere die visuellen Komponenten) erst mit Lazarus selbst hinzu. Die bei Lazarus enthaltenen Komponenten decken schon ein gewisses Spektrum an Datenbanken ab. Da aber immer Verbesserungsbedarf besteht und es auch exotischere Datenbanken gibt, existieren externe Komponenten / Bibliotheken, die die Möglichkeiten von Lazarus erweitern. <br />
<br />
Diese Seite stellt einen Einstieg für das Thema 'Lazarus und Datenbanken' dar. Die folgende Tabelle bietet einen Überblick über die unterstützten Datenbanken. Da sie noch auf dem Stand von FPC 1.9.7 basiert, sollte sie schnellstens auf den aktuellen Stand gebracht werden. Ein Hinweis noch an alle Experimentierfreudigen: Installieren sie nur die Datenbank-Komponenten, deren Client-Bibliotheken (falls diese erforderlich sind) auf ihrem Computer installiert sind. Sonst kann es passieren, dass Lazarus den Start mit einer Fehlermeldung (wegen fehlender Dateien) verweigert. Da sie somit keine Möglichkeit mehr haben, die Komponenten zu deinstallieren, ist eine Neuinstallation von Lazarus erforderlich.<br />
<br />
=== Tabelle 1 ===<br />
{| class="wikitable sortable" BORDER="1" CELLSPACING="0"<br />
!STYLE="background:#ffdead;"|'''Datenbank'''<br />
!STYLE="background:#ffdead;"|'''Package Name'''<br />
!STYLE="background:#ffdead;"|'''Benötigt eine <br>Client Bibliothek?'''<br />
!STYLE="background:#ffdead;"|'''Benötigt Server?'''<br />
!STYLE="background:#ffdead;"|'''Unterstützte Versionen'''<br />
!STYLE="background:#ffdead;"|'''Unterstützte Plattformen'''<br />
|----<br />
|'''Textdateien'''||SDFLaz||Nein||Nein|| - || Alle<br />
|----<br />
|'''Im Speicher'''||MemDSLaz||Nein||Nein|| - || Alle<br />
|----<br />
|'''DBase'''||[[Lazarus_Tdbf_Tutorial/de | DBFLaz]]||Nein||Nein|| III+, IV, VII || Alle<br />
|----<br />
|'''FoxPro'''||[[Lazarus_Tdbf_Tutorial/de | DBFLaz]]||Nein||Nein|| 2.0, 2.5, 3.0 (nicht vollständig) || Alle<br />
|----<br />
|'''Paradox'''||[[TParadoxDataSet | TParadoxDataSet]]||Nein||Nein|| bis zu Version 7 (und höher ??) || Alle<br />
|----<br />
|[http://www.sqlite.org/ '''SQLite''']||SQLite||Ja||Nein|| 2.x, 3.x || Alle<br />
|----<br />
|[http://www.mysql.com/ '''MySQL''']||[[MySQLDatabases/de | SQLdb]]||Ja||Ja|| 3 - 5.5 || i386: Linux, Win32<br />
|----<br />
|[http://www.firebirdsql.org/ '''Firebird''']||IBase||Ja||Depends<sup>1)</sup>||1 - 2.5|| i386: Linux, Win32<br />
|----<br />
|[http://www.postgresql.org/ '''PostgreSQL''']||SQLdb||Ja||Ja|| 6.6 - 8 || i386: Linux, Win32<br />
|----<br />
|'''ODBC'''||[[ODBCConn|SQLdb]]||Ja||Depends|| 3.x <sup>2)</sup> || i386: Linux, Win32<br />
|----<br />
|[http://www.embarcadero.com/products/interbase-smp '''Interbase''']||IBase||Ja||Ja||4 - 6|| i386: Linux, Win32<br />
|----<br />
|[http://www.oracle.com/ '''Oracle''']||SQLdb||Ja||Ja|| - || - <br />
|----<br />
|[http://www.advantagedatabase.com/ '''Advantage''']||TAdsDataSet||Ja||Nein||10.1 und höher|| i386: Linux, Win32<br />
|}<br />
<br />
<sup>1)</sup> Sie können eine eingebettete Version von Firebird zumindest unter Windows benutzen (möglicherweise unter Linux/OSX mit einigen Verrenkungen), oder Sie nehmen eine Server-Version unter Windows/Unix/OSX/FreeBSD/anderen von Firebird unterstützen Plattformen<br />
<br />
<sup>2)</sup> Diese Versionsnummer bezieht sich auf den ODBC Standard, nicht auf die Versionsnummer eines Treibers oder Treibermanagers. Es gibt ODBC 3.x Treiber für die meisten DBMS.<br />
<br />
== Weitere Informationen zu Lazarus und Datenbanken ==<br />
<br />
* FAQ: [[Lazarus DB Faq/de|Lazarus Datenbank FAQ]]<br />
* Tutorial: [[Lazarus Database Tutorial/de|Lazarus Database Tutorial]]<br />
* MySQL: [[MySQLDatabases/de|MySQLDatabases]]<br />
* Firebird: [[Firebird]]<br />
* ODBC: [[ODBCConn]]<br />
<br />
== Unterschiede zu Delphi ==<br />
<br />
Der vielleicht wichtigste Vorteil von Lazarus gegenüber Delphi ist die Plattformunabhängigkeit. Das bedeutet auf der anderen Seite, dass es für die Windows-spezifischen Teile bei Delphi (z.B. die BDE) keine direkten Entsprechungen bei Lazarus gibt. Gleiches gilt für die meisten Reporting-Werkzeuge. Bei der Konvertierung eines Delphiprogramms nach Lazarus sollte man auf die verschiedenen Dateisysteme achten, wenn das Programm auf allen von Lazarus unterstützten Plattformen laufen soll. Als Beispiel möchte ich nur die unterschiedlichen Trennzeichen im Pfadnamen ( \ bzw. / ) nennen.<br />
<br />
== In Lazarus enthaltene Datenbank-Packages ==<br />
<br />
=== sqldblaz.lpk ===<br />
Dieses Package bietet Zugriff auf verschiedene Datenbanken (z.B. MySQL oder Interbase/Firebird). Das Package wird standardmäßig mit Lazarus installiert (unter Windows). Die Komponenten (TSQLQuery, TSQLTransaction, TIBConnection, TODBCConnection, TOracleConnection, TMySQL40Connection, TMySQL41Connection, TMySQL50Connection, TPQConnection) befinden sich auf der 'SQLdb' Seite in der Komponentenpalette.<br />
<br />
=== dbflaz.lpk ===<br />
Dieses Package bietet Zugriff auf dBase und FoxPro Datenbanken. Weitere Informationen bietet das [[Lazarus Tdbf Tutorial/de|Lazarus TDbf Tutorial]]. Das Package wird standardmäßig mit Lazarus installiert. Die Komponente TDbf befindet sich auf der 'Data Access' Seite in der Komponentenpalette.<br />
<br />
=== sqlitelaz.lpk ===<br />
Dieses Package bietet Zugriff auf SQLite Datenbanken. Weitere Informationen sind im [[Lazarus Database Tutorial/de|Lazarus Database Tutorial]] zu finden.<br />
<br />
=== sdflaz.lpk ===<br />
Das Package wird standardmäßig mit Lazarus installiert. Die Komponente TSdfDataSet befindet sich auf der 'Data Access' Seite in der Komponentenpalette.<br />
<br />
=== lazreport.lpk ===<br />
Mit LazReport enthält Lazarus auch einen Reportgenerator. Dieser basiert auf FreeReport 2.32. Zum Funktionieren von LazReport muss das Package Printer4Lazarus installiert sein.<br />
(Mit Revision 11950 wurde LazReport in das Lazarus SVN Repository übernommen.)<br />
<br />
==== lazreportpdfexport.lpk ====<br />
Dieses Package erweitert LazReport um die Möglichkeit, einen Report auch im PDF-Format exportieren zu können.<br />
<br />
== Externe Komponenten / Bibliotheken ==<br />
<br />
=== Zeos DataBase Objects ===<br />
Diese Komponenten bieten Zugriff auf verschiedene Datenbanken. Weitere Informationen finden sie [[ZeosDBO|hier]]. Es existiert auch ein [[Zeos tutorial/de|Zeos Tutorial]].<br />
<br />
=== Pascal Data Objects ===<br />
Die Pascal Data Objects sind von Zeoslib abgeleitet. Es werden die mit MySQL 4.1 und 5.0 eingeführten Funktionen wie prepared statements, binding, und stored procedures von der Datenbank-API namens Pascal Data Objects unterstützt, die durch die PHP Data Objects inspiriert wurde. Der für die Verwendung dieser neuen API notwendige Code und die Dokumentation sind bei Sourceforge zu finden:<br />
<br />
http://pdo.sourceforge.net<br />
<br />
Jan 30, 2007: PDO hat Treiber für Firebird 1.5 und Firebird 2.0 hinzugefügt<br />
<br />
--[[User:Jrmarino|Jrmarino]] 11:28, 13 Mar 2006 (CET)<br />
<br />
=== TPSQL ===<br />
Diese Komponenten bieten Zugriff mittels TCP/IP auf PostgreSQL Datenbanken. Weitere Informationen finden sie auf [[TPSQL/de|dieser Seite]].<br />
<br />
=== FIBL ===<br />
Diese Komponenten bieten Zugriff auf Interbase und Firebird Datenbanken. Die Homepage ist [http://sourceforge.net/projects/fibl http://sourceforge.net/projects/fibl].<br />
<br />
=== FBLib Firebird Library ===<br />
<br />
[http://fblib.altervista.org/ FBLib] ist eine Open Source Bibliothek (nicht datensensitiv) für direkten Zugriff auf die Firebird relationale Datenbank von Borland Delphi / Kylix, Free Pascal und Lazarus aus. Für die meisten Benutzer dürfte es gewöhnungsbedürftig sein, dass hier nicht die übliche Anbindung über TDatasource erfolgt.<br />
<br />
Gegenwärtig sind folgende Features enthalten:<br />
<br />
* Direkter Zugriff auf Firebird 1.0.x, 1.5.x und 2.x Classic oder SuperServer<br />
* Multiplattform [Win32,Gnu/Linux,FreeBSD)<br />
* Automatische Auswahl der Client Bibliothek 'fbclient' oder 'gds32'<br />
* Abfragen (Queries) mit Parametern<br />
* Unterstützt SQL Dialekt 1/3<br />
* LGPL Lizenzvertrag<br />
* Extrahieren von Metadaten<br />
* Simple Script Parser<br />
* Nur 100-150 KB werden zur finalen EXE hinzugefügt<br />
* Unterstützt BLOB Felder<br />
* Export von Daten als HTML SQL Script<br />
* Service manager (backup, restore, gfix...)<br />
* Events Alerter<br />
<br />
Sie können die Dokumentation von der [http://fblib.altervista.org/|FBLib Webseite] herunterladen.<br />
<br />
=== Unified Interbase ===<br />
<br />
UIB bietet Zugriff auf Interbase, Firebird und YAFFIL Datenbanken. Die Homepage ist [http://www.progdigy.com www.progdigy.com]. Ein SVN-Repository ist verfügbar unter https://uib.svn.sourceforge.net/svnroot/uib .<br />
<br />
=== TechInsite Object Persistence Framework (tiOPF) ===<br />
Nähere Informationen zu tiOPF sind auf dieser [[tiOPF/de|Seite]] zu finden.<br />
<br />
=== Advantage TDataSet Descendant ===<br />
Der Advantage TDataSet Descendant bietet ein Mittel für Verbindungen (und Öffnen von Tabellen) mit dem Advantage Database Server. Advantage ist eine flexible, administrations-freie eingebettete Datenbank, die den Zugriff als Client/Server oder als Peer-to-peer auf die Dateiformate Clipper, FoxPro und Visual FoxPro 9 ermöglicht. Ebenso wie auf das eigene Dateiformat, das einen Migrationpfad darstellt, der es erlaubt, neuere Features zu verwenden.<br />
<br />
Wichtigste Features:<br />
* Gebührenfreier Peer-to-peer - Datenbankzugriff mit Migrationspfad zu Client/Server<br />
* Multi-Platform (Clients unterstützt unter Windows und Linux, Server unterstützt unter Windows, Linux und NetWare)<br />
* Unterstützt sowohl navigationalen als auch relationalen SQL-Datenbankzugriff<br />
* Volltext-Suchmaschine<br />
* Tabellen-, Index-, Memo- und Kommunikationsverschlüsselung<br />
* Kompatibel mit den originalen TDataset-Komponenten<br />
* Online-Backup<br />
* Server unterstützt Replikation<br />
<br />
Für weitere Informationen, siehe die [http://www.advantagedatabase.com Advantage Database Server] Website.<br />
<br />
== Gängige Stoperfallen für Einsteiger und Hinweise zur Fehlersuche ==<br />
=== Fehlermeldung "Operation cannot be performed in an inactive dataset" bei Nachschlagefeldern ===<br />
* Man stelle zunächst sicher, daß das Unit der DataModule vor der des Anwendungsformulars aktiviert wird. Hierzu editiert man die '''projectX.lpr''' und bringt die Create-Zeilen in passende Reihenfolge:<br />
begin<br />
RequireDerivedFormResource:=True;<br />
Application.Initialize;<br />
Application.CreateForm(TDataModule1, DataModule1); //Erst das DataModule!<br />
Application.CreateForm(TForm1, Form1);<br />
Application.Run;<br />
end.<br />
<br />
* Das Problem kann immer noch auftreten, wenn das Dataset der Haupttabelle vor dem Datset der Nachschlagetabelle aktiviert wird.<br />
Er ließe sich auf "visuelle" Weise, wenn der Designer eine Möglichkeit hätte, die Erstellungsreihenfolge ("Create Order") der Komponenten zu definieren. aber Lazarus bietet derzeit (2017-02) diese Möglichkeit noch nicht. Die Abhilfe ist trotzdem einfach: Zur Laufzeit kann man das Deaktivieren ''sämtlicher'' daran gebundenen Datasets sicherstellen, wenn man an geeigneter Stelle [z.B. in .FormCreate oder bei einer nicht lokalen Datenbank noch besser in einer vorgeschalteten Loginprozedur, welche die korrekte Anmeldung und Verbindung zur Datenbank sicherstellt, ehe die eigentliche Anwendung startet] die Connection deaktiviert. Daraufhin aktiviert man sie (wieder), und im Anschluß lassen sich die Datasets in sinnvoller, definierter Reihenfolge aktivieren:<br />
<br />
// Setzt alle etwaig aktiven Datasets inaktiv:<br />
DataModule1.ZConInventory.Disconnect;<br />
DataModule1.ZConInventory.Connect;<br />
//Aktivieren der Datasets: Lookup-Datasets zuerst, dann die Haupttabelle<br />
DataModule1.ztNachschlagetabelle.Active := True;<br />
DataModule1.ztHaupttabelle.Active := True;<br />
DataModule1.(...)<br />
<br />
<br />
<br />
== Siehe auch ==<br />
<br />
* [[Lazarus DB Faq]]<br />
<br />
[[Category:Databases/de]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Getting_Lazarus/de&diff=107041Getting Lazarus/de2017-02-03T10:14:44Z<p>Arabidopsis: /* Verwenden von fpclazup */</p>
<hr />
<div>{{Getting Lazarus}}<br />
<br />
==Download und Installation einer offiziellen Version von Lazarus==<br />
<br />
=== Von SourceForge ===<br />
<br />
Binäre Releases für verschiedene Plattformen sind hier [http://sourceforge.net/project/showfiles.php?group_id=89339 Lazarus Sourceforge Download Bereich] verfügbar.<br />
<br />
=== Für bestimmte Plattformen ===<br />
<br />
Lazarus für Windows erhalten - benutzen Sie den obigen Link zu Sourceforge.<br />
<br />
[[Lazarus release version for Ubuntu|Get Lazarus for Ubuntu]]<br />
<br />
[[Lazarus release version for Fedora|Get Lazarus for Fedora]]<br />
<br />
[[Lazarus release version for Suse|Get Lazarus for Suse]]<br />
<br />
[[Lazarus release version for Mandriva|Get Lazarus for Mandriva]]<br />
<br />
[[Lazarus release version for Mac|Get Lazarus for Mac]]<br />
<br />
[[Lazarus on Solaris]]<br />
<br />
== Holen Sie sich SVN==<br />
<br />
=== TortoiseSVN Client ===<br />
<br />
TortoiseSVN ist ein SVN-Client nur für Windows. Sie können ihn von http://tortoisesvn.tigris.org/ herunterladen. Das Programm unterstützt zunächst nur die englische Sprache. Weitere Sprachen (z.B. Deutsch) müssen durch separate Pakete (auf der selben Seite erhältlich) nachgerüstet werden.<br />
<br />
[[TortoiseSvn|Diese Seite]] zeigt Ihnen, wie Sie Lazarus SVN Quelltexte herunterladen und aktualisieren können. Aber auch für FPC-Quelltexte ist dieses Verfahren in gleicher Weise anwendbar.<br />
<br />
=== Andere SVN-Clients ===<br />
<br />
Ein SVN-Kommandozeilen-Client ist von der offiziellen SVN [http://subversion.tigris.org/ Internetseite] für viele Plattformen erhältlich.<br />
Unter Linux wird empfohlen, ''Subversion'' mit dem Paketmanagementsystems ihrer Distribution zu installieren. Zum Beispiel:<br />
<br />
sudo apt-get install subversion<br />
<br />
Mac OS X enthält svn ab der Version 10.5. Bei älteren Versionen müssen Sie es selbst installieren.<br />
<br />
==Holen Sie sich eine Lazarus SVN Entwicklungsversion==<br />
<br />
=== Von der Kommandozeile aus ===<br />
<br />
Um Lazarus zum ersten Mal zu erhalten:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Verzeichnis, in dem Sie den Lazarus-Ordner erstellen wollen und tippen Sie:<br />
<nowiki>svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Um die Lazarus-Quellen zu aktualisieren:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Lazarus-Verzeichnis und tippen Sie:<br />
svn update<br />
<br />
Zum Kompilieren siehe [[#Compiling_and_installing_Lazarus|hier]].<br />
<br />
===Alternative URLs===<br />
Manchmal funktioniert die oben genannte URL des Repository nicht, weil sich zwischen Ihnen und dem SVN-Server ein http-Proxy-Server befindet. Dieser Server soll zwar oft ein 'transparenter' Proxy sein, aber er leitet Ihre SVN-Kommandos nicht korrekt an den Server svn.freepascal.org weiter.<br />
<br />
Der svn.freepascal.org Server hat aber auch den Port 8080 offen. Vielleicht mischt sich der Proxy-Server nicht in den http-Datenverkehr über diesen Port ein. Deshalb können Sie auch folgendes probieren:<br />
<nowiki>svn co http://svn.freepascal.org:8080/svn/lazarus/trunk lazarus</nowiki> <br />
<br />
Das Lazarus-SVN-Repository wird auf Sourceforge mit einer Verzögerung von 3 Minuten unter Verwendung von svnsync gespiegelt. Das Sourceforge-Repository verwendet das https-Protokoll. Proxy-Server mischen sich bei diesem Protokoll nicht ein. Sie können demnach auch von Sourceforge mit dem folgenden Kommando 'auschecken' (checkout):<br />
<nowiki>svn co https://svn.sourceforge.net/svnroot/lazarus/trunk lazarus</nowiki><br />
<br />
Die FPC- und Lazarus-SVN-Repositories werden auch auf svn2.freepascal.org gespiegelt. Sie können von svn2.freepascal.org aus-checken mit <br />
<nowiki>svn co http://svn2.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Wenn Sie selbst den Proxy-Server verwalten, oder mit dem Verwalter befreundet sind, gibt es hier Details zur Einrichtung des Proxys zum Weiterleiten der SVN-Befehle: http://subversion.tigris.org/faq.html#proxy Dies enthält ein Beispiel für 'squid'. Vergessen Sie nicht, den SVN-Client für die Benutzung des Proxys einzurichten! (Für TortoiseSVN, siehe 'settings/network').<br />
<br />
===Skripte===<br />
<br />
Es gibt Skripte für Windows und Linux, um das Herunterladen und Erstellen von Lazarus zu automatisieren: [[LazarusScripts|Scripts for Lazarus]]<br />
<br />
==Kompilieren und Installieren von Lazarus==<br />
<br />
Siehe [[Installing Lazarus]] - ein detaillierter Installationsführer, oder http://www.stack.nl/~marcov/buildfaq.pdf - eine noch detailliertere Anleitung.<br />
<br />
===Von der Kommandozeile aus===<br />
<br />
Lazarus wird mit einem Makefile für das GNU "make" Programm geliefert. <br />
<br />
{{Warning|Wenn Sie auch Tools von Codegear (oder Borland) installiert haben, könnte dadurch ein Konflikt mit GNU "make" entstehen}}<br />
<br />
Dieses Tool erlaubt es, Lazarus einfach von der Befehlszeile zu kompilieren. <br />
Sie müssen allerdings zuerst FPC und die FPC-Packages installiert und konfiguriert haben.<br />
<br />
Um zu kompilieren wechseln Sie in der Befehlszeile/einem Terminal in das Lazarus-Verzeichnis und geben ein:<br />
make<br />
<br />
Dadurch werden LCL und Lazarus IDE (mit den installierten Standardpackages) neu erstellt.<br />
<br />
===Make targets===<br />
Die folgenden Kompilier-Profile ("targets") können für das Programm "make" angegeben werden:<br />
<br />
* '''clean''' - the command will clean all compiled LCL and IDE units. Warning, this might make your project uncompilable (even though IDE still run, since binary is not deleted). Zum Beispiel: "''make clean''"<br />
<br />
* '''bigide''' - Dieses Kommando erstellt LCL und IDE mit zusätzlichen Packages neu. Zum Beispiel: "''make bigide''"<br />
<br />
* '''lcl''' - dieser Befehl erstellt nur die LCL neu. Die IDE wird nicht angefasst. Das Kommando ist sehr hilfreich, wenn Sie Änderungen an der LCL vornehmen und testen müssen, wie sich die Änderungen auf ihr Projekt auswirken, ohne die Gefahr, dass Lazarus nicht mehr funktioniert. Das Neuerstellen nur der LCL geht schneller als das Neuerstellen von LCL und IDE zusammen. Zum Beispiel: "''make lcl''"<br />
<br />
* '''components'''<br />
* '''packager/registration'''<br />
* '''ideintf''' <br />
* '''packager'''<br />
* '''bigidecomponents'''<br />
* '''ide''' <br />
* '''idepkg''' <br />
* '''idebig''' <br />
* '''bigide''' <br />
* '''starter''' - the command rebuilds startlazarus binary.<br />
* '''lazbuilder'''<br />
* '''tools''' <br />
* '''all''' <br />
* '''cleanide'''<br />
* '''purge'''<br />
* '''examples''' - the command rebuilds examples lazarus <br />
* '''install''' <br />
* '''lazbuild'''<br />
<br />
<br />
Wenn kein Profil angegeben ist, werden LCL und Lazarus IDE (mit einem Basisset von Komponenten) neu erstellt.<br />
<br />
===Make parameters===<br />
Es gibt zusätzliche Parameter, die für die Erstellung von Lazarus verwendet werden können.<br />
<br />
* '''OPT'''=%compiler_switches<br />
the %compiler_switches is passed to each fpc call. The option is useful for specifying defines<br />
<br />
Zum Beispiel:<br />
make bigide OPT="-dNoGdkPixBufLib -gw2" <br />
erstellt LCL und IDE mit der Option NoGdkPixBufLib sowie dwarf2 Debugging-Informationen. <br />
<br />
* '''LCL_PLATFORM'''=%platform<br />
%platform is the target Widgetset. Es kann win32, gtk, gtk2, qt, carbon oder cocoa sein.<br />
<br />
Zum Beispiel:<br />
make LCL_PLATFORM=gtk2<br />
Erstellt LCL und IDE für das gtk2 Widgetset neu<br />
<br />
* '''FPC'''=%compiler_path<br />
or<br />
* '''PP'''=%compiler_path<br />
%compiler_path is the path to a custom compiler binary you want to build the target with.<br />
<br />
==Holen Sie sich eine FPC SVN Entwicklungsversion==<br />
<br />
Hier sind einige Tipps, wie Sie sich die Entwicklungsversion von FPC (aktuell: 2.5.1) besorgen und installieren können. Diese enthält neue Features und Fehlerkorrekturen, ist aber weniger stabil und enthält auch vermutlich neue Fehler.<br />
Der Compiler ist nicht im Lazarus SVN enthalten, hat aber sein eigenes FPC SVN. Sie ''müssen'' zuerst die letzte offizielle Version von FPC installieren. Laden Sie sie von hier http://sourceforge.net/projects/freepascal/ herunter und installieren Sie sie. Oder lesen Sie weitere Details hier: [[Installing_Lazarus#Installing_The_Free_Pascal_Compiler|Installing the Free Pascal Compiler]].<br />
<br />
Erzeugen Sie dann ein Verzeichnis und laden Sie FPC von SVN herunter:<br />
<br />
mkdir -p ~/freepascal<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/fpc/trunk fpc<br />
<br />
Dies wird einige Zeit dauern.<br />
<br />
Sie können allerdings auch den TortoiseSVN-Client für Windows einsetzen wie bereits zuvor beschrieben.<br />
<br />
==Kompilieren und Installieren von FPC==<br />
<br />
Es gibt viele Arten, FPC zu kompilieren und zu installieren.<br />
<br />
* Benutzen Sie einfach ''make''.<br />
* Erstellen Sie ein FPC-Package für Ihre Linux-Distribution (.deb oder .rpm Datei). Das Package erlaubt es, FPC einfach zu deinstallieren, zu upgraden oder downgraden und stellt sicher, dass alle Dateien in die richtigen Verzeichnisse installiert werden. Wenn also irgend etwas schief läuft, können Ihnen andere Benutzer zu Hilfe kommen.<br />
<br />
In jedem Fall muss Lazarus abschließend noch für den neuen FPC konfiguriert werden.<br />
<br />
===Erstellen und Installieren von Free Pascal unter UNIX-ähnlichen Systemen===<br />
<br />
Die folgenden Instruktionen gelten für UNIX-ähnliche Plattformen, wie z.B. Linux, aber auch für Mac OS X.<br />
<br />
Free Pascal aus dem Quellcode zu erstellen, kann in einigen Situationen nützlich sein. Ein Beispiel stellt das Debuggen eines Problems im Compiler dar, in der RTL oder in der FCL. Die ausgelieferten FPC-Installationen kommen ohne Debug-Informationen daher, aber Installationen, die mittels der Makefiles erstellt wurden, enthalten diese Debug-Informationen als Vorgabe. Ein weiteres Anwendungsbeispiel ist das Austesten einer Entwicklungsversion des Compilers, obwohl dafür oftmals auch Schnappschüsse verfügbar sind.<br />
<br />
<b>Schritt 1 - Stellen Sie sicher, dass Sie einen kompatiblen, startenden Compiler installiert haben.</b><br />
<br />
Üblicherweise bedeutet das, dass Sie die letzte stabile Version installiert haben.<br />
<br />
<b>Schritt 2 - Laden Sie die Quelltexte des neuen Compilers herunter</b><br />
<br />
Als erstes sollten Sie den Free Pascal Quellcode der Version herunterladen, die Sie zu erstellen wünschen. Um, zum Beispiel, die letzten Fixes des 2.4 Zweiges herunter zu laden, geben Sie ein:<br />
<br />
svn checkout http://svn.freepascal.org/svn/fpc/branches/fixes_2_4 fpcfixes2_4<br />
<br />
<b>Schritt 3 - Erstellen des Compilers</b><br />
<br />
Wechseln Sie nun in das neu erzeugte Verzeichnis und erstellen und installieren Sie Free Pascal:<br />
<br />
cd fpcfixes2_4<br />
make clean all install INSTALL_PREFIX=~<br />
<br />
Dadurch wird der Compiler in 3 Durchläufen übersetzt, indem zuerst der bereits installierte Compiler und dann der neu übersetzte Compiler benutzt wird.<br />
<br />
Es installiert alle benötigten Dateien im angegebenen Verzeichnis. Falls nötig, installieren Sie in ein anderes Verzeichnis. Sie müssen allerdings mit dem Root-Konto angemeldet sein, bzw. Administrator-Rechte haben, wenn mit einem normalen Benutzerkonto kein Schreibzugriff auf dieses Verzeichnis möglich ist.<br />
<br />
<b>Schritt 4 - Aktualisieren Sie Ihre fpc.cfg Datei</b><br />
<br />
Dann erzeugen Sie die Datei<br />
~/.fpc.cfg<br />
<br />
Dies ist eine verborgene Datei (beachten Sie den ersten Punkt). Geben Sie folgende Zeilen in diese Datei ein. Falls Sie in ein anderes Verzeichnis installiert haben, nehmen Sie statt dessen Ihr eigenes home-Verzeichnis.<br />
<br />
#include /etc/fpc.cfg<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/*<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/rtl<br />
<br />
Dadurch werden zukünftige Versionen in PREFIX=~ installiert, ohne diese Konfigurationsdatei anzurühren.<br />
<br />
Um fpc zu starten, muss ~/bin in der Umgebungsvariablen PATH stehen. Normalerweise ist es bereits standardgemäß dort.<br />
Sie müssen auch ~/lib/fpc/2.5.1 an PATH anfügen, weil sich das aktuelle Compiler-Binary dort befindet.<br />
Die meisten Linuxsysteme verwenden die Bash-Shell und diese Einstellung kann zur Datei ~/.bashrc (wieder eine versteckte Datei) hinzugefügt werden:<br />
export PATH=~/lib/fpc/2.5.1:$PATH<br />
<br />
Beachten Sie: Der Pfadseparator ist ":" unter Linux (";" unter Windows). Lesen Sie nun "Configure Lazarus for the new fpc" unten für den nächsten Schritt.<br />
<br />
===Erstellen eines Debian/Ubuntu Packages===<br />
<br />
'''Wichtig''': Dieses Skript erzeugt '''nicht''' die offiziellen Debian/Ubuntu Packages. Es erzeugt ein FPC-Package das den Compiler und alle benötigten Packages enthält. <br />
<br />
Um dieses Package zu erstellen, müssen Sie zuerst einige Packages installieren:<br />
<br />
sudo apt-get install libgpmg1-dev fakeroot libncurses5-dev build-essential<br />
<br />
Gehen Sie in das Lazarus Quelltextverzeichnis. Dieses Verzeichnis muss die Schreibrechte besitzen.<br />
<br />
cd ~/freepascal/lazarus/tools/install<br />
./create_fpc_deb.sh fpc ~/freepascal/fpc<br />
<br />
Falls Sie eine Fehlermeldung über eine fehlende Datei oder ein fehlendes Werkzeug erhalten müssen Sie das fehlende Package nachinstallieren. Falls Sie eine Kompiler-Fehlermeldung erhalten, dann ist Ihr installierter FPC nicht die offizielle Version oder Sie hatten Pech und haben sich eine fehlerhafte SVN-Version heruntergeladen. Suchen Sie Hilfe über die Mailing-Liste, das Forum oder den Chat.<br />
Falls alles geklappt hat, haben Sie jetzt eine .deb-Datei, die Sie installieren können:<br />
<br />
sudo dpkg -i fpc_2.5.1-091121_i386.deb<br />
<br />
Der Dateiname wird bei Ihnen etwas anders lauten.<br />
<br />
===Erstellen eines RPM-Packages===<br />
<br />
ToDo...<br />
<br />
===Lazarus für den neuen FPC einrichten===<br />
<br />
FPC ist jetzt installiert, entweder mittels "make install" oder dadurch, dass Sie ein distributionsspezifisches Package verwenden.<br />
Der nächste Schritt ist das Kompilieren von Lazarus SVN mit dem neuen Compiler und die IDE anzuweisen, das Verzeichnis ''/home/username/freepascal/fpc'' als ''FPC Quelltext-Verzeichnis'' zu benutzen.<br />
<br />
Falls Sie Lazarus SVN bislang noch nicht heruntergeladen haben, tun Sie das jetzt: [[Getting_Lazarus#Development_versions_from_SVN|Development versions from SVN]]. Zum Beispiel:<br />
<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus<br />
<br />
Dies wird einige Zeit dauern, anschließend geht es weiter mit:<br />
cd ~/freepascal/lazarus<br />
make clean all<br />
<br />
Wenn Sie dabei Linker-Fehlermeldungen erhalten, müssen Sie einige zusätzliche Packages installieren (build-essential, libgtk2.0-dev,libgdk-pixbuf-dev).<br />
Starten Sie die IDE:<br />
cd ~/freepascal/lazarus<br />
./lazarus<br />
<br />
Das ist eine minimalistische IDE ohne irgendwelche Extra-Packages. Nun muss die IDE eingerichtet werden, dann kann sie mit den Packages erstellt werden: <br />
<br />
* Gehen Sie zu Werkzeuge / Einstellungen / Umgebung <br />
* Setzen Sie das ''Lazarus-Verzeichnis'' auf ''/home/username/freepascal/lazarus'' <br />
* Setzen Sie das ''FPC-Quelltextverzeichnis'' auf ''/home/username/freepascal/fpc''<br />
* Klicken Sie auf ''Ok''. Das schließt den Dialog.<br />
* Werkzeuge / Lazarus kompilieren einrichten / Quick Build Options / IDE mit Packages neu kompilieren<br />
* Klicken Sie auf ''Neu kompilieren''.<br />
* Starten Sie die IDE neu<br />
* Jetzt haben Sie die neueste und beste IDE, erstellt mit dem neuesten und besten FPC.<br />
<br />
== Entwicklungsversionen über Git holen ==<br />
Es gibt einen [[git mirrors|Git Spiegelserver]] des offiziellen SubVersion-Repository der über [http://github.com/ GitHub] erreichbar ist. Dieser Spiegelserver wird alle 15 Minuten mit dem SubVersion-Repository abgeglichen. Für weitere Informationen darüber, wie Sie [http://git-scm.com/ Git] erhalten können und damit das Lazarus-Repository klonen können, folgen Sie diesem Link: [[git mirrors|Git Mirrors]].<br />
Sie können 'git' auch direkt über den SubVersion-Server erreichen; nehmen Sie den Link 'git-svn'. Siehe [[Lazarus git-svn|Lazarus git-svn]] für weitere Details.<br />
<br />
== Entwicklungsversionen über Mercurial holen==<br />
<s>There is a Hg mirror of the official SubVersion repository being maintained on [http://florianklaempfl.de:8000/lazarustrunk/ florianklaempfl.de].</s><br />
<br />
Dieser Mirror existiert nicht mehr. Siehe die [http://lists.freepascal.org/lists/fpc-devel/2010-June/020442.html Mitteilung] von Florian Klämpfl.<br />
<br />
==Schnappschuss-Methode==<br />
<br />
Wenn Sie SVN nicht direkt verwenden wollen, können sie einen täglich aktualisierten Schnappschuss ausprobieren. Eine Liste der Mirrors finden Sie auf der Seite [[Lazarus Snapshots Downloads]].<br />
<br />
==Verwenden von fpclazup==<br />
In einem [http://forum.lazarus.freepascal.org/index.php/topic,27211.225.html Forenbeitrag von DonAlfredo vom 04.01.2017] schreibt dieser, die fpc'''laz'''up Binaries würden nicht länger wie bisher als Teil eines commits der fpc(laz)up-Quellen verteilt, sondern seien künftig ein separates Release: [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases].<br />
<br />
Um auf einem diesbezüglich noch völlig "blanken" Rechner ein aktuelles fpc und Lazarus zu installieren, geht man also wie folgt vor:<br />
<br />
* Download des passenden Binaries (z.B. fpclazup-x86_64-linux) von [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases]<br />
* Installieren der erforderlichen Bibliotheken und Werkzeuge (nachzulesen im [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/blob/master/Readme.TXT Readme.TXT])<br />
* unter Linux: das heruntergeladene Binary ausführbar machen (z.B. mit ''chmod a+x fpclazup-x86_64-linux'')<br />
* Starten des Binaries<br />
<br />
Bei einem erfolgreichen Programmlauf sollten in der Ausgabe nur Zeilen der Art <br />
fpclazup: info: ...<br />
auftauchen (einzige Ausnahme ein "WARNING: ~/development/lazarus/docs/chm/lcl/lcl.chm was created but is empty"), sonst sind noch nicht alle Installationsvoraussetzungen erfüllt, man bekommt von der Ausgabe sachdienliche Hinweise und kann von vorn beginnen.<br />
<br />
Hat man alles mit den Standardeinstellungen laufen lassen, sollte anschließend mit knapp 1 GB wohlbefüllte Verzeichnis<br />
"~/development/lazarus/" existieren und sich darin "startlazarus" starten lassen.<br />
<br />
Mit dem ersten Aufruf von ''fpclazup'' sind des weiteren im selben Verzeichnis die Konfigurationsdateien "fpcup.ini" und "settings.ini" enstanden, die man nun nach den eigenen Wünschen konfigurieren und den Erstellvorgang dann wiederholen kann, indem man beispielsweise weitere der vorbereiteten Module ("Enabled=1") in die Installation mit aufnimmt.<br />
<br />
Paßt alles, sollte man mit den drei Dateien (fpclazup-x86_64-linux, fpcup.ini und settings.ini) auch weitere Rechner reproduzierbar mit Lazarus in der gewünschten Konfiguration ausstatten können. <br />
<br />
Allerdings erfordert das dann nicht unerheblich Bandbreite sowie Plattenplatz (ca. 2 GB für die Repositories) auf jedem Rechner. Eine interessante Alternative zumindest unter Linux könnte daher das Verpacken einer so erstellten Installation in distributionsspezifische Pakete (z.B. "deb" für Ubuntu/Linux) sein: Eine erfolgreiche Installation wäre damit zum einen samt der Auswahl kompatibler Packages '''archiviert''', zum anderen ließe sie sich bandbreitenschonend auf mehrere Rechner '''verteilen''', ohne überall erneut die knapp 2 GB aus den Repositories herunterladen zu müssen. <br />
<br />
TO_DO Läßt sich dazu [FPCUPModule25] (Name=lazpackager) verwenden? (Ein wesentlicher Unterschied zwischen fpcup und den zu jeder Distribution angebotenen Paketen ist ja, daß letztere Fpc und Lazarus systemweit installieren, während fpclazup ausschließlich im eigenen Homeverzeichnis arbeitet - hier könnte es also Stolperfallen geben.)<br />
<br />
TO:DO Wie löst man die (augenscheinlich sehr häufig) auftretenden Fehler der Art "Error running fpcup. Technical details: error executing sequence lhelp; line: X, param: Y", welche augenscheinlich bei den meisten Kombinationen aus "--lazURL"-Variationen und unterschiedlicher Modulauswahl in der ''fpcup.ini'' auftreten können, wenn sie nicht auf die von fpclazup vorgeschlagenen Ursachen ("- make sure ...") zurückgehen?<br />
<br />
<br />
TO_DO Wie lassen sich selbstdefinierte Werkzeuge (Werkzeuge → Externe Werkzeuge einrichten → Hinzufügen) integrieren?<br />
<br />
==Durchsuchen des Quelltext-Repositorys mit einem Web-Browser==<br />
<br />
Die Inhalte des SVN-Archivs können auch mit einem Web-Browser durchsucht werden über die [http://www.freepascal.org/cgi-bin/viewcvs.cgi/?root=lazarus ViewCVS] Schnittstelle.<br />
<br />
==Lazarus Distributionen==<br />
<br />
Es gibt einige inoffizielle Seiten, wo Sie Lazarus und Free Pascal ebenfalls finden können:<br />
*You can get a Ubuntu LiveCD from Austrian University of Applied Sciences hosting <br />
http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso<br />
und die md5sum Datei http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso.md5.<br />
<br />
==Mitwirkende und Änderungen==<br />
<br />
Diese Seite wurde konvertiert von der epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=GettingLazarus Version].<br />
<br />
[[Category:Lazarus/de]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Getting_Lazarus/de&diff=107020Getting Lazarus/de2017-02-02T11:45:02Z<p>Arabidopsis: /* Verwenden von fpclazup */</p>
<hr />
<div>{{Getting Lazarus}}<br />
<br />
==Download und Installation einer offiziellen Version von Lazarus==<br />
<br />
=== Von SourceForge ===<br />
<br />
Binäre Releases für verschiedene Plattformen sind hier [http://sourceforge.net/project/showfiles.php?group_id=89339 Lazarus Sourceforge Download Bereich] verfügbar.<br />
<br />
=== Für bestimmte Plattformen ===<br />
<br />
Lazarus für Windows erhalten - benutzen Sie den obigen Link zu Sourceforge.<br />
<br />
[[Lazarus release version for Ubuntu|Get Lazarus for Ubuntu]]<br />
<br />
[[Lazarus release version for Fedora|Get Lazarus for Fedora]]<br />
<br />
[[Lazarus release version for Suse|Get Lazarus for Suse]]<br />
<br />
[[Lazarus release version for Mandriva|Get Lazarus for Mandriva]]<br />
<br />
[[Lazarus release version for Mac|Get Lazarus for Mac]]<br />
<br />
[[Lazarus on Solaris]]<br />
<br />
== Holen Sie sich SVN==<br />
<br />
=== TortoiseSVN Client ===<br />
<br />
TortoiseSVN ist ein SVN-Client nur für Windows. Sie können ihn von http://tortoisesvn.tigris.org/ herunterladen. Das Programm unterstützt zunächst nur die englische Sprache. Weitere Sprachen (z.B. Deutsch) müssen durch separate Pakete (auf der selben Seite erhältlich) nachgerüstet werden.<br />
<br />
[[TortoiseSvn|Diese Seite]] zeigt Ihnen, wie Sie Lazarus SVN Quelltexte herunterladen und aktualisieren können. Aber auch für FPC-Quelltexte ist dieses Verfahren in gleicher Weise anwendbar.<br />
<br />
=== Andere SVN-Clients ===<br />
<br />
Ein SVN-Kommandozeilen-Client ist von der offiziellen SVN [http://subversion.tigris.org/ Internetseite] für viele Plattformen erhältlich.<br />
Unter Linux wird empfohlen, ''Subversion'' mit dem Paketmanagementsystems ihrer Distribution zu installieren. Zum Beispiel:<br />
<br />
sudo apt-get install subversion<br />
<br />
Mac OS X enthält svn ab der Version 10.5. Bei älteren Versionen müssen Sie es selbst installieren.<br />
<br />
==Holen Sie sich eine Lazarus SVN Entwicklungsversion==<br />
<br />
=== Von der Kommandozeile aus ===<br />
<br />
Um Lazarus zum ersten Mal zu erhalten:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Verzeichnis, in dem Sie den Lazarus-Ordner erstellen wollen und tippen Sie:<br />
<nowiki>svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Um die Lazarus-Quellen zu aktualisieren:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Lazarus-Verzeichnis und tippen Sie:<br />
svn update<br />
<br />
Zum Kompilieren siehe [[#Compiling_and_installing_Lazarus|hier]].<br />
<br />
===Alternative URLs===<br />
Manchmal funktioniert die oben genannte URL des Repository nicht, weil sich zwischen Ihnen und dem SVN-Server ein http-Proxy-Server befindet. Dieser Server soll zwar oft ein 'transparenter' Proxy sein, aber er leitet Ihre SVN-Kommandos nicht korrekt an den Server svn.freepascal.org weiter.<br />
<br />
Der svn.freepascal.org Server hat aber auch den Port 8080 offen. Vielleicht mischt sich der Proxy-Server nicht in den http-Datenverkehr über diesen Port ein. Deshalb können Sie auch folgendes probieren:<br />
<nowiki>svn co http://svn.freepascal.org:8080/svn/lazarus/trunk lazarus</nowiki> <br />
<br />
Das Lazarus-SVN-Repository wird auf Sourceforge mit einer Verzögerung von 3 Minuten unter Verwendung von svnsync gespiegelt. Das Sourceforge-Repository verwendet das https-Protokoll. Proxy-Server mischen sich bei diesem Protokoll nicht ein. Sie können demnach auch von Sourceforge mit dem folgenden Kommando 'auschecken' (checkout):<br />
<nowiki>svn co https://svn.sourceforge.net/svnroot/lazarus/trunk lazarus</nowiki><br />
<br />
Die FPC- und Lazarus-SVN-Repositories werden auch auf svn2.freepascal.org gespiegelt. Sie können von svn2.freepascal.org aus-checken mit <br />
<nowiki>svn co http://svn2.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Wenn Sie selbst den Proxy-Server verwalten, oder mit dem Verwalter befreundet sind, gibt es hier Details zur Einrichtung des Proxys zum Weiterleiten der SVN-Befehle: http://subversion.tigris.org/faq.html#proxy Dies enthält ein Beispiel für 'squid'. Vergessen Sie nicht, den SVN-Client für die Benutzung des Proxys einzurichten! (Für TortoiseSVN, siehe 'settings/network').<br />
<br />
===Skripte===<br />
<br />
Es gibt Skripte für Windows und Linux, um das Herunterladen und Erstellen von Lazarus zu automatisieren: [[LazarusScripts|Scripts for Lazarus]]<br />
<br />
==Kompilieren und Installieren von Lazarus==<br />
<br />
Siehe [[Installing Lazarus]] - ein detaillierter Installationsführer, oder http://www.stack.nl/~marcov/buildfaq.pdf - eine noch detailliertere Anleitung.<br />
<br />
===Von der Kommandozeile aus===<br />
<br />
Lazarus wird mit einem Makefile für das GNU "make" Programm geliefert. <br />
<br />
{{Warning|Wenn Sie auch Tools von Codegear (oder Borland) installiert haben, könnte dadurch ein Konflikt mit GNU "make" entstehen}}<br />
<br />
Dieses Tool erlaubt es, Lazarus einfach von der Befehlszeile zu kompilieren. <br />
Sie müssen allerdings zuerst FPC und die FPC-Packages installiert und konfiguriert haben.<br />
<br />
Um zu kompilieren wechseln Sie in der Befehlszeile/einem Terminal in das Lazarus-Verzeichnis und geben ein:<br />
make<br />
<br />
Dadurch werden LCL und Lazarus IDE (mit den installierten Standardpackages) neu erstellt.<br />
<br />
===Make targets===<br />
Die folgenden Kompilier-Profile ("targets") können für das Programm "make" angegeben werden:<br />
<br />
* '''clean''' - the command will clean all compiled LCL and IDE units. Warning, this might make your project uncompilable (even though IDE still run, since binary is not deleted). Zum Beispiel: "''make clean''"<br />
<br />
* '''bigide''' - Dieses Kommando erstellt LCL und IDE mit zusätzlichen Packages neu. Zum Beispiel: "''make bigide''"<br />
<br />
* '''lcl''' - dieser Befehl erstellt nur die LCL neu. Die IDE wird nicht angefasst. Das Kommando ist sehr hilfreich, wenn Sie Änderungen an der LCL vornehmen und testen müssen, wie sich die Änderungen auf ihr Projekt auswirken, ohne die Gefahr, dass Lazarus nicht mehr funktioniert. Das Neuerstellen nur der LCL geht schneller als das Neuerstellen von LCL und IDE zusammen. Zum Beispiel: "''make lcl''"<br />
<br />
* '''components'''<br />
* '''packager/registration'''<br />
* '''ideintf''' <br />
* '''packager'''<br />
* '''bigidecomponents'''<br />
* '''ide''' <br />
* '''idepkg''' <br />
* '''idebig''' <br />
* '''bigide''' <br />
* '''starter''' - the command rebuilds startlazarus binary.<br />
* '''lazbuilder'''<br />
* '''tools''' <br />
* '''all''' <br />
* '''cleanide'''<br />
* '''purge'''<br />
* '''examples''' - the command rebuilds examples lazarus <br />
* '''install''' <br />
* '''lazbuild'''<br />
<br />
<br />
Wenn kein Profil angegeben ist, werden LCL und Lazarus IDE (mit einem Basisset von Komponenten) neu erstellt.<br />
<br />
===Make parameters===<br />
Es gibt zusätzliche Parameter, die für die Erstellung von Lazarus verwendet werden können.<br />
<br />
* '''OPT'''=%compiler_switches<br />
the %compiler_switches is passed to each fpc call. The option is useful for specifying defines<br />
<br />
Zum Beispiel:<br />
make bigide OPT="-dNoGdkPixBufLib -gw2" <br />
erstellt LCL und IDE mit der Option NoGdkPixBufLib sowie dwarf2 Debugging-Informationen. <br />
<br />
* '''LCL_PLATFORM'''=%platform<br />
%platform is the target Widgetset. Es kann win32, gtk, gtk2, qt, carbon oder cocoa sein.<br />
<br />
Zum Beispiel:<br />
make LCL_PLATFORM=gtk2<br />
Erstellt LCL und IDE für das gtk2 Widgetset neu<br />
<br />
* '''FPC'''=%compiler_path<br />
or<br />
* '''PP'''=%compiler_path<br />
%compiler_path is the path to a custom compiler binary you want to build the target with.<br />
<br />
==Holen Sie sich eine FPC SVN Entwicklungsversion==<br />
<br />
Hier sind einige Tipps, wie Sie sich die Entwicklungsversion von FPC (aktuell: 2.5.1) besorgen und installieren können. Diese enthält neue Features und Fehlerkorrekturen, ist aber weniger stabil und enthält auch vermutlich neue Fehler.<br />
Der Compiler ist nicht im Lazarus SVN enthalten, hat aber sein eigenes FPC SVN. Sie ''müssen'' zuerst die letzte offizielle Version von FPC installieren. Laden Sie sie von hier http://sourceforge.net/projects/freepascal/ herunter und installieren Sie sie. Oder lesen Sie weitere Details hier: [[Installing_Lazarus#Installing_The_Free_Pascal_Compiler|Installing the Free Pascal Compiler]].<br />
<br />
Erzeugen Sie dann ein Verzeichnis und laden Sie FPC von SVN herunter:<br />
<br />
mkdir -p ~/freepascal<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/fpc/trunk fpc<br />
<br />
Dies wird einige Zeit dauern.<br />
<br />
Sie können allerdings auch den TortoiseSVN-Client für Windows einsetzen wie bereits zuvor beschrieben.<br />
<br />
==Kompilieren und Installieren von FPC==<br />
<br />
Es gibt viele Arten, FPC zu kompilieren und zu installieren.<br />
<br />
* Benutzen Sie einfach ''make''.<br />
* Erstellen Sie ein FPC-Package für Ihre Linux-Distribution (.deb oder .rpm Datei). Das Package erlaubt es, FPC einfach zu deinstallieren, zu upgraden oder downgraden und stellt sicher, dass alle Dateien in die richtigen Verzeichnisse installiert werden. Wenn also irgend etwas schief läuft, können Ihnen andere Benutzer zu Hilfe kommen.<br />
<br />
In jedem Fall muss Lazarus abschließend noch für den neuen FPC konfiguriert werden.<br />
<br />
===Erstellen und Installieren von Free Pascal unter UNIX-ähnlichen Systemen===<br />
<br />
Die folgenden Instruktionen gelten für UNIX-ähnliche Plattformen, wie z.B. Linux, aber auch für Mac OS X.<br />
<br />
Free Pascal aus dem Quellcode zu erstellen, kann in einigen Situationen nützlich sein. Ein Beispiel stellt das Debuggen eines Problems im Compiler dar, in der RTL oder in der FCL. Die ausgelieferten FPC-Installationen kommen ohne Debug-Informationen daher, aber Installationen, die mittels der Makefiles erstellt wurden, enthalten diese Debug-Informationen als Vorgabe. Ein weiteres Anwendungsbeispiel ist das Austesten einer Entwicklungsversion des Compilers, obwohl dafür oftmals auch Schnappschüsse verfügbar sind.<br />
<br />
<b>Schritt 1 - Stellen Sie sicher, dass Sie einen kompatiblen, startenden Compiler installiert haben.</b><br />
<br />
Üblicherweise bedeutet das, dass Sie die letzte stabile Version installiert haben.<br />
<br />
<b>Schritt 2 - Laden Sie die Quelltexte des neuen Compilers herunter</b><br />
<br />
Als erstes sollten Sie den Free Pascal Quellcode der Version herunterladen, die Sie zu erstellen wünschen. Um, zum Beispiel, die letzten Fixes des 2.4 Zweiges herunter zu laden, geben Sie ein:<br />
<br />
svn checkout http://svn.freepascal.org/svn/fpc/branches/fixes_2_4 fpcfixes2_4<br />
<br />
<b>Schritt 3 - Erstellen des Compilers</b><br />
<br />
Wechseln Sie nun in das neu erzeugte Verzeichnis und erstellen und installieren Sie Free Pascal:<br />
<br />
cd fpcfixes2_4<br />
make clean all install INSTALL_PREFIX=~<br />
<br />
Dadurch wird der Compiler in 3 Durchläufen übersetzt, indem zuerst der bereits installierte Compiler und dann der neu übersetzte Compiler benutzt wird.<br />
<br />
Es installiert alle benötigten Dateien im angegebenen Verzeichnis. Falls nötig, installieren Sie in ein anderes Verzeichnis. Sie müssen allerdings mit dem Root-Konto angemeldet sein, bzw. Administrator-Rechte haben, wenn mit einem normalen Benutzerkonto kein Schreibzugriff auf dieses Verzeichnis möglich ist.<br />
<br />
<b>Schritt 4 - Aktualisieren Sie Ihre fpc.cfg Datei</b><br />
<br />
Dann erzeugen Sie die Datei<br />
~/.fpc.cfg<br />
<br />
Dies ist eine verborgene Datei (beachten Sie den ersten Punkt). Geben Sie folgende Zeilen in diese Datei ein. Falls Sie in ein anderes Verzeichnis installiert haben, nehmen Sie statt dessen Ihr eigenes home-Verzeichnis.<br />
<br />
#include /etc/fpc.cfg<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/*<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/rtl<br />
<br />
Dadurch werden zukünftige Versionen in PREFIX=~ installiert, ohne diese Konfigurationsdatei anzurühren.<br />
<br />
Um fpc zu starten, muss ~/bin in der Umgebungsvariablen PATH stehen. Normalerweise ist es bereits standardgemäß dort.<br />
Sie müssen auch ~/lib/fpc/2.5.1 an PATH anfügen, weil sich das aktuelle Compiler-Binary dort befindet.<br />
Die meisten Linuxsysteme verwenden die Bash-Shell und diese Einstellung kann zur Datei ~/.bashrc (wieder eine versteckte Datei) hinzugefügt werden:<br />
export PATH=~/lib/fpc/2.5.1:$PATH<br />
<br />
Beachten Sie: Der Pfadseparator ist ":" unter Linux (";" unter Windows). Lesen Sie nun "Configure Lazarus for the new fpc" unten für den nächsten Schritt.<br />
<br />
===Erstellen eines Debian/Ubuntu Packages===<br />
<br />
'''Wichtig''': Dieses Skript erzeugt '''nicht''' die offiziellen Debian/Ubuntu Packages. Es erzeugt ein FPC-Package das den Compiler und alle benötigten Packages enthält. <br />
<br />
Um dieses Package zu erstellen, müssen Sie zuerst einige Packages installieren:<br />
<br />
sudo apt-get install libgpmg1-dev fakeroot libncurses5-dev build-essential<br />
<br />
Gehen Sie in das Lazarus Quelltextverzeichnis. Dieses Verzeichnis muss die Schreibrechte besitzen.<br />
<br />
cd ~/freepascal/lazarus/tools/install<br />
./create_fpc_deb.sh fpc ~/freepascal/fpc<br />
<br />
Falls Sie eine Fehlermeldung über eine fehlende Datei oder ein fehlendes Werkzeug erhalten müssen Sie das fehlende Package nachinstallieren. Falls Sie eine Kompiler-Fehlermeldung erhalten, dann ist Ihr installierter FPC nicht die offizielle Version oder Sie hatten Pech und haben sich eine fehlerhafte SVN-Version heruntergeladen. Suchen Sie Hilfe über die Mailing-Liste, das Forum oder den Chat.<br />
Falls alles geklappt hat, haben Sie jetzt eine .deb-Datei, die Sie installieren können:<br />
<br />
sudo dpkg -i fpc_2.5.1-091121_i386.deb<br />
<br />
Der Dateiname wird bei Ihnen etwas anders lauten.<br />
<br />
===Erstellen eines RPM-Packages===<br />
<br />
ToDo...<br />
<br />
===Lazarus für den neuen FPC einrichten===<br />
<br />
FPC ist jetzt installiert, entweder mittels "make install" oder dadurch, dass Sie ein distributionsspezifisches Package verwenden.<br />
Der nächste Schritt ist das Kompilieren von Lazarus SVN mit dem neuen Compiler und die IDE anzuweisen, das Verzeichnis ''/home/username/freepascal/fpc'' als ''FPC Quelltext-Verzeichnis'' zu benutzen.<br />
<br />
Falls Sie Lazarus SVN bislang noch nicht heruntergeladen haben, tun Sie das jetzt: [[Getting_Lazarus#Development_versions_from_SVN|Development versions from SVN]]. Zum Beispiel:<br />
<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus<br />
<br />
Dies wird einige Zeit dauern, anschließend geht es weiter mit:<br />
cd ~/freepascal/lazarus<br />
make clean all<br />
<br />
Wenn Sie dabei Linker-Fehlermeldungen erhalten, müssen Sie einige zusätzliche Packages installieren (build-essential, libgtk2.0-dev,libgdk-pixbuf-dev).<br />
Starten Sie die IDE:<br />
cd ~/freepascal/lazarus<br />
./lazarus<br />
<br />
Das ist eine minimalistische IDE ohne irgendwelche Extra-Packages. Nun muss die IDE eingerichtet werden, dann kann sie mit den Packages erstellt werden: <br />
<br />
* Gehen Sie zu Werkzeuge / Einstellungen / Umgebung <br />
* Setzen Sie das ''Lazarus-Verzeichnis'' auf ''/home/username/freepascal/lazarus'' <br />
* Setzen Sie das ''FPC-Quelltextverzeichnis'' auf ''/home/username/freepascal/fpc''<br />
* Klicken Sie auf ''Ok''. Das schließt den Dialog.<br />
* Werkzeuge / Lazarus kompilieren einrichten / Quick Build Options / IDE mit Packages neu kompilieren<br />
* Klicken Sie auf ''Neu kompilieren''.<br />
* Starten Sie die IDE neu<br />
* Jetzt haben Sie die neueste und beste IDE, erstellt mit dem neuesten und besten FPC.<br />
<br />
== Entwicklungsversionen über Git holen ==<br />
Es gibt einen [[git mirrors|Git Spiegelserver]] des offiziellen SubVersion-Repository der über [http://github.com/ GitHub] erreichbar ist. Dieser Spiegelserver wird alle 15 Minuten mit dem SubVersion-Repository abgeglichen. Für weitere Informationen darüber, wie Sie [http://git-scm.com/ Git] erhalten können und damit das Lazarus-Repository klonen können, folgen Sie diesem Link: [[git mirrors|Git Mirrors]].<br />
Sie können 'git' auch direkt über den SubVersion-Server erreichen; nehmen Sie den Link 'git-svn'. Siehe [[Lazarus git-svn|Lazarus git-svn]] für weitere Details.<br />
<br />
== Entwicklungsversionen über Mercurial holen==<br />
<s>There is a Hg mirror of the official SubVersion repository being maintained on [http://florianklaempfl.de:8000/lazarustrunk/ florianklaempfl.de].</s><br />
<br />
Dieser Mirror existiert nicht mehr. Siehe die [http://lists.freepascal.org/lists/fpc-devel/2010-June/020442.html Mitteilung] von Florian Klämpfl.<br />
<br />
==Schnappschuss-Methode==<br />
<br />
Wenn Sie SVN nicht direkt verwenden wollen, können sie einen täglich aktualisierten Schnappschuss ausprobieren. Eine Liste der Mirrors finden Sie auf der Seite [[Lazarus Snapshots Downloads]].<br />
<br />
==Verwenden von fpclazup==<br />
In einem [http://forum.lazarus.freepascal.org/index.php/topic,27211.225.html Forenbeitrag von DonAlfredo vom 04.01.2017] schreibt dieser, die fpc'''laz'''up Binaries würden nicht länger wie bisher als Teil eines commits der fpc(laz)up-Quellen verteilt, sondern seien künftig ein separates Release: [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases].<br />
<br />
Um auf einem diesbezüglich noch völlig "blanken" Rechner ein aktuelles fpc und Lazarus zu installieren, geht man also wie folgt vor:<br />
<br />
* Download des passenden Binaries (z.B. fpclazup-x86_64-linux) von [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases]<br />
* Installieren der erforderlichen Bibliotheken und Werkzeuge (nachzulesen im [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/blob/master/Readme.TXT Readme.TXT])<br />
* unter Linux: das heruntergeladene Binary ausführbar machen (z.B. mit ''chmod a+x fpclazup-x86_64-linux'')<br />
* Starten des Binaries<br />
<br />
Bei einem erfolgreichen Programmlauf sollten in der Ausgabe nur Zeilen der Art <br />
fpclazup: info: ...<br />
auftauchen (einzige Ausnahme ein "WARNING: ~/development/lazarus/docs/chm/lcl/lcl.chm was created but is empty"), sonst sind noch nicht alle Installationsvoraussetzungen erfüllt, man bekommt von der Ausgabe sachdienliche Hinweise und kann von vorn beginnen.<br />
<br />
Hat man alles mit den Standardeinstellungen laufen lassen, sollte anschließend mit knapp 1 GB wohlbefüllte Verzeichnis<br />
"~/development/lazarus/" existieren und sich darin "startlazarus" starten lassen.<br />
<br />
Mit dem ersten Aufruf von ''fpclazup'' sind des weiteren im selben Verzeichnis die Konfigurationsdateien "fpcup.ini" und "settings.ini" enstanden, die man nun nach den eigenen Wünschen konfigurieren und den Erstellvorgang dann wiederholen kann, indem man beispielsweise weitere der vorbereiteten Module ("Enabled=1") in die Installation mit aufnimmt.<br />
<br />
Paßt alles, sollte man mit den drei Dateien (fpclazup-x86_64-linux, fpcup.ini und settings.ini) auch weitere Rechner reproduzierbar mit Lazarus in der gewünschten Konfiguration ausstatten können.<br />
<br />
<br />
Eine interessante Alternative zumindest unter Linux könnte das Verpacken einer so erstellten Installation in zur Distribution (z.B. Ubuntu/Linux) sein. Die aktuelle Installation wäre damit zum einen archiviert, zum anderen ließe sie sich bandbreitenschonend auf mehrere Rechner verteilen, ohne jeweils neu die knapp 2 GB aus den Repositories herunterladen zu müssen. <br />
<br />
TO_DO Läßt sich dazu [FPCUPModule25] (Name=lazpackager) verwenden?<br />
<br />
TO_DO Wie lassen sich selbstdefinierte Werkzeuge (Werkzeuge → Externe Werkzeuge einrichten → Hinzufügen) integrieren?<br />
<br />
==Durchsuchen des Quelltext-Repositorys mit einem Web-Browser==<br />
<br />
Die Inhalte des SVN-Archivs können auch mit einem Web-Browser durchsucht werden über die [http://www.freepascal.org/cgi-bin/viewcvs.cgi/?root=lazarus ViewCVS] Schnittstelle.<br />
<br />
==Lazarus Distributionen==<br />
<br />
Es gibt einige inoffizielle Seiten, wo Sie Lazarus und Free Pascal ebenfalls finden können:<br />
*You can get a Ubuntu LiveCD from Austrian University of Applied Sciences hosting <br />
http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso<br />
und die md5sum Datei http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso.md5.<br />
<br />
==Mitwirkende und Änderungen==<br />
<br />
Diese Seite wurde konvertiert von der epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=GettingLazarus Version].<br />
<br />
[[Category:Lazarus/de]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Getting_Lazarus/de&diff=107018Getting Lazarus/de2017-02-02T11:05:47Z<p>Arabidopsis: /* Verwenden von fpclazup */</p>
<hr />
<div>{{Getting Lazarus}}<br />
<br />
==Download und Installation einer offiziellen Version von Lazarus==<br />
<br />
=== Von SourceForge ===<br />
<br />
Binäre Releases für verschiedene Plattformen sind hier [http://sourceforge.net/project/showfiles.php?group_id=89339 Lazarus Sourceforge Download Bereich] verfügbar.<br />
<br />
=== Für bestimmte Plattformen ===<br />
<br />
Lazarus für Windows erhalten - benutzen Sie den obigen Link zu Sourceforge.<br />
<br />
[[Lazarus release version for Ubuntu|Get Lazarus for Ubuntu]]<br />
<br />
[[Lazarus release version for Fedora|Get Lazarus for Fedora]]<br />
<br />
[[Lazarus release version for Suse|Get Lazarus for Suse]]<br />
<br />
[[Lazarus release version for Mandriva|Get Lazarus for Mandriva]]<br />
<br />
[[Lazarus release version for Mac|Get Lazarus for Mac]]<br />
<br />
[[Lazarus on Solaris]]<br />
<br />
== Holen Sie sich SVN==<br />
<br />
=== TortoiseSVN Client ===<br />
<br />
TortoiseSVN ist ein SVN-Client nur für Windows. Sie können ihn von http://tortoisesvn.tigris.org/ herunterladen. Das Programm unterstützt zunächst nur die englische Sprache. Weitere Sprachen (z.B. Deutsch) müssen durch separate Pakete (auf der selben Seite erhältlich) nachgerüstet werden.<br />
<br />
[[TortoiseSvn|Diese Seite]] zeigt Ihnen, wie Sie Lazarus SVN Quelltexte herunterladen und aktualisieren können. Aber auch für FPC-Quelltexte ist dieses Verfahren in gleicher Weise anwendbar.<br />
<br />
=== Andere SVN-Clients ===<br />
<br />
Ein SVN-Kommandozeilen-Client ist von der offiziellen SVN [http://subversion.tigris.org/ Internetseite] für viele Plattformen erhältlich.<br />
Unter Linux wird empfohlen, ''Subversion'' mit dem Paketmanagementsystems ihrer Distribution zu installieren. Zum Beispiel:<br />
<br />
sudo apt-get install subversion<br />
<br />
Mac OS X enthält svn ab der Version 10.5. Bei älteren Versionen müssen Sie es selbst installieren.<br />
<br />
==Holen Sie sich eine Lazarus SVN Entwicklungsversion==<br />
<br />
=== Von der Kommandozeile aus ===<br />
<br />
Um Lazarus zum ersten Mal zu erhalten:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Verzeichnis, in dem Sie den Lazarus-Ordner erstellen wollen und tippen Sie:<br />
<nowiki>svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Um die Lazarus-Quellen zu aktualisieren:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Lazarus-Verzeichnis und tippen Sie:<br />
svn update<br />
<br />
Zum Kompilieren siehe [[#Compiling_and_installing_Lazarus|hier]].<br />
<br />
===Alternative URLs===<br />
Manchmal funktioniert die oben genannte URL des Repository nicht, weil sich zwischen Ihnen und dem SVN-Server ein http-Proxy-Server befindet. Dieser Server soll zwar oft ein 'transparenter' Proxy sein, aber er leitet Ihre SVN-Kommandos nicht korrekt an den Server svn.freepascal.org weiter.<br />
<br />
Der svn.freepascal.org Server hat aber auch den Port 8080 offen. Vielleicht mischt sich der Proxy-Server nicht in den http-Datenverkehr über diesen Port ein. Deshalb können Sie auch folgendes probieren:<br />
<nowiki>svn co http://svn.freepascal.org:8080/svn/lazarus/trunk lazarus</nowiki> <br />
<br />
Das Lazarus-SVN-Repository wird auf Sourceforge mit einer Verzögerung von 3 Minuten unter Verwendung von svnsync gespiegelt. Das Sourceforge-Repository verwendet das https-Protokoll. Proxy-Server mischen sich bei diesem Protokoll nicht ein. Sie können demnach auch von Sourceforge mit dem folgenden Kommando 'auschecken' (checkout):<br />
<nowiki>svn co https://svn.sourceforge.net/svnroot/lazarus/trunk lazarus</nowiki><br />
<br />
Die FPC- und Lazarus-SVN-Repositories werden auch auf svn2.freepascal.org gespiegelt. Sie können von svn2.freepascal.org aus-checken mit <br />
<nowiki>svn co http://svn2.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Wenn Sie selbst den Proxy-Server verwalten, oder mit dem Verwalter befreundet sind, gibt es hier Details zur Einrichtung des Proxys zum Weiterleiten der SVN-Befehle: http://subversion.tigris.org/faq.html#proxy Dies enthält ein Beispiel für 'squid'. Vergessen Sie nicht, den SVN-Client für die Benutzung des Proxys einzurichten! (Für TortoiseSVN, siehe 'settings/network').<br />
<br />
===Skripte===<br />
<br />
Es gibt Skripte für Windows und Linux, um das Herunterladen und Erstellen von Lazarus zu automatisieren: [[LazarusScripts|Scripts for Lazarus]]<br />
<br />
==Kompilieren und Installieren von Lazarus==<br />
<br />
Siehe [[Installing Lazarus]] - ein detaillierter Installationsführer, oder http://www.stack.nl/~marcov/buildfaq.pdf - eine noch detailliertere Anleitung.<br />
<br />
===Von der Kommandozeile aus===<br />
<br />
Lazarus wird mit einem Makefile für das GNU "make" Programm geliefert. <br />
<br />
{{Warning|Wenn Sie auch Tools von Codegear (oder Borland) installiert haben, könnte dadurch ein Konflikt mit GNU "make" entstehen}}<br />
<br />
Dieses Tool erlaubt es, Lazarus einfach von der Befehlszeile zu kompilieren. <br />
Sie müssen allerdings zuerst FPC und die FPC-Packages installiert und konfiguriert haben.<br />
<br />
Um zu kompilieren wechseln Sie in der Befehlszeile/einem Terminal in das Lazarus-Verzeichnis und geben ein:<br />
make<br />
<br />
Dadurch werden LCL und Lazarus IDE (mit den installierten Standardpackages) neu erstellt.<br />
<br />
===Make targets===<br />
Die folgenden Kompilier-Profile ("targets") können für das Programm "make" angegeben werden:<br />
<br />
* '''clean''' - the command will clean all compiled LCL and IDE units. Warning, this might make your project uncompilable (even though IDE still run, since binary is not deleted). Zum Beispiel: "''make clean''"<br />
<br />
* '''bigide''' - Dieses Kommando erstellt LCL und IDE mit zusätzlichen Packages neu. Zum Beispiel: "''make bigide''"<br />
<br />
* '''lcl''' - dieser Befehl erstellt nur die LCL neu. Die IDE wird nicht angefasst. Das Kommando ist sehr hilfreich, wenn Sie Änderungen an der LCL vornehmen und testen müssen, wie sich die Änderungen auf ihr Projekt auswirken, ohne die Gefahr, dass Lazarus nicht mehr funktioniert. Das Neuerstellen nur der LCL geht schneller als das Neuerstellen von LCL und IDE zusammen. Zum Beispiel: "''make lcl''"<br />
<br />
* '''components'''<br />
* '''packager/registration'''<br />
* '''ideintf''' <br />
* '''packager'''<br />
* '''bigidecomponents'''<br />
* '''ide''' <br />
* '''idepkg''' <br />
* '''idebig''' <br />
* '''bigide''' <br />
* '''starter''' - the command rebuilds startlazarus binary.<br />
* '''lazbuilder'''<br />
* '''tools''' <br />
* '''all''' <br />
* '''cleanide'''<br />
* '''purge'''<br />
* '''examples''' - the command rebuilds examples lazarus <br />
* '''install''' <br />
* '''lazbuild'''<br />
<br />
<br />
Wenn kein Profil angegeben ist, werden LCL und Lazarus IDE (mit einem Basisset von Komponenten) neu erstellt.<br />
<br />
===Make parameters===<br />
Es gibt zusätzliche Parameter, die für die Erstellung von Lazarus verwendet werden können.<br />
<br />
* '''OPT'''=%compiler_switches<br />
the %compiler_switches is passed to each fpc call. The option is useful for specifying defines<br />
<br />
Zum Beispiel:<br />
make bigide OPT="-dNoGdkPixBufLib -gw2" <br />
erstellt LCL und IDE mit der Option NoGdkPixBufLib sowie dwarf2 Debugging-Informationen. <br />
<br />
* '''LCL_PLATFORM'''=%platform<br />
%platform is the target Widgetset. Es kann win32, gtk, gtk2, qt, carbon oder cocoa sein.<br />
<br />
Zum Beispiel:<br />
make LCL_PLATFORM=gtk2<br />
Erstellt LCL und IDE für das gtk2 Widgetset neu<br />
<br />
* '''FPC'''=%compiler_path<br />
or<br />
* '''PP'''=%compiler_path<br />
%compiler_path is the path to a custom compiler binary you want to build the target with.<br />
<br />
==Holen Sie sich eine FPC SVN Entwicklungsversion==<br />
<br />
Hier sind einige Tipps, wie Sie sich die Entwicklungsversion von FPC (aktuell: 2.5.1) besorgen und installieren können. Diese enthält neue Features und Fehlerkorrekturen, ist aber weniger stabil und enthält auch vermutlich neue Fehler.<br />
Der Compiler ist nicht im Lazarus SVN enthalten, hat aber sein eigenes FPC SVN. Sie ''müssen'' zuerst die letzte offizielle Version von FPC installieren. Laden Sie sie von hier http://sourceforge.net/projects/freepascal/ herunter und installieren Sie sie. Oder lesen Sie weitere Details hier: [[Installing_Lazarus#Installing_The_Free_Pascal_Compiler|Installing the Free Pascal Compiler]].<br />
<br />
Erzeugen Sie dann ein Verzeichnis und laden Sie FPC von SVN herunter:<br />
<br />
mkdir -p ~/freepascal<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/fpc/trunk fpc<br />
<br />
Dies wird einige Zeit dauern.<br />
<br />
Sie können allerdings auch den TortoiseSVN-Client für Windows einsetzen wie bereits zuvor beschrieben.<br />
<br />
==Kompilieren und Installieren von FPC==<br />
<br />
Es gibt viele Arten, FPC zu kompilieren und zu installieren.<br />
<br />
* Benutzen Sie einfach ''make''.<br />
* Erstellen Sie ein FPC-Package für Ihre Linux-Distribution (.deb oder .rpm Datei). Das Package erlaubt es, FPC einfach zu deinstallieren, zu upgraden oder downgraden und stellt sicher, dass alle Dateien in die richtigen Verzeichnisse installiert werden. Wenn also irgend etwas schief läuft, können Ihnen andere Benutzer zu Hilfe kommen.<br />
<br />
In jedem Fall muss Lazarus abschließend noch für den neuen FPC konfiguriert werden.<br />
<br />
===Erstellen und Installieren von Free Pascal unter UNIX-ähnlichen Systemen===<br />
<br />
Die folgenden Instruktionen gelten für UNIX-ähnliche Plattformen, wie z.B. Linux, aber auch für Mac OS X.<br />
<br />
Free Pascal aus dem Quellcode zu erstellen, kann in einigen Situationen nützlich sein. Ein Beispiel stellt das Debuggen eines Problems im Compiler dar, in der RTL oder in der FCL. Die ausgelieferten FPC-Installationen kommen ohne Debug-Informationen daher, aber Installationen, die mittels der Makefiles erstellt wurden, enthalten diese Debug-Informationen als Vorgabe. Ein weiteres Anwendungsbeispiel ist das Austesten einer Entwicklungsversion des Compilers, obwohl dafür oftmals auch Schnappschüsse verfügbar sind.<br />
<br />
<b>Schritt 1 - Stellen Sie sicher, dass Sie einen kompatiblen, startenden Compiler installiert haben.</b><br />
<br />
Üblicherweise bedeutet das, dass Sie die letzte stabile Version installiert haben.<br />
<br />
<b>Schritt 2 - Laden Sie die Quelltexte des neuen Compilers herunter</b><br />
<br />
Als erstes sollten Sie den Free Pascal Quellcode der Version herunterladen, die Sie zu erstellen wünschen. Um, zum Beispiel, die letzten Fixes des 2.4 Zweiges herunter zu laden, geben Sie ein:<br />
<br />
svn checkout http://svn.freepascal.org/svn/fpc/branches/fixes_2_4 fpcfixes2_4<br />
<br />
<b>Schritt 3 - Erstellen des Compilers</b><br />
<br />
Wechseln Sie nun in das neu erzeugte Verzeichnis und erstellen und installieren Sie Free Pascal:<br />
<br />
cd fpcfixes2_4<br />
make clean all install INSTALL_PREFIX=~<br />
<br />
Dadurch wird der Compiler in 3 Durchläufen übersetzt, indem zuerst der bereits installierte Compiler und dann der neu übersetzte Compiler benutzt wird.<br />
<br />
Es installiert alle benötigten Dateien im angegebenen Verzeichnis. Falls nötig, installieren Sie in ein anderes Verzeichnis. Sie müssen allerdings mit dem Root-Konto angemeldet sein, bzw. Administrator-Rechte haben, wenn mit einem normalen Benutzerkonto kein Schreibzugriff auf dieses Verzeichnis möglich ist.<br />
<br />
<b>Schritt 4 - Aktualisieren Sie Ihre fpc.cfg Datei</b><br />
<br />
Dann erzeugen Sie die Datei<br />
~/.fpc.cfg<br />
<br />
Dies ist eine verborgene Datei (beachten Sie den ersten Punkt). Geben Sie folgende Zeilen in diese Datei ein. Falls Sie in ein anderes Verzeichnis installiert haben, nehmen Sie statt dessen Ihr eigenes home-Verzeichnis.<br />
<br />
#include /etc/fpc.cfg<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/*<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/rtl<br />
<br />
Dadurch werden zukünftige Versionen in PREFIX=~ installiert, ohne diese Konfigurationsdatei anzurühren.<br />
<br />
Um fpc zu starten, muss ~/bin in der Umgebungsvariablen PATH stehen. Normalerweise ist es bereits standardgemäß dort.<br />
Sie müssen auch ~/lib/fpc/2.5.1 an PATH anfügen, weil sich das aktuelle Compiler-Binary dort befindet.<br />
Die meisten Linuxsysteme verwenden die Bash-Shell und diese Einstellung kann zur Datei ~/.bashrc (wieder eine versteckte Datei) hinzugefügt werden:<br />
export PATH=~/lib/fpc/2.5.1:$PATH<br />
<br />
Beachten Sie: Der Pfadseparator ist ":" unter Linux (";" unter Windows). Lesen Sie nun "Configure Lazarus for the new fpc" unten für den nächsten Schritt.<br />
<br />
===Erstellen eines Debian/Ubuntu Packages===<br />
<br />
'''Wichtig''': Dieses Skript erzeugt '''nicht''' die offiziellen Debian/Ubuntu Packages. Es erzeugt ein FPC-Package das den Compiler und alle benötigten Packages enthält. <br />
<br />
Um dieses Package zu erstellen, müssen Sie zuerst einige Packages installieren:<br />
<br />
sudo apt-get install libgpmg1-dev fakeroot libncurses5-dev build-essential<br />
<br />
Gehen Sie in das Lazarus Quelltextverzeichnis. Dieses Verzeichnis muss die Schreibrechte besitzen.<br />
<br />
cd ~/freepascal/lazarus/tools/install<br />
./create_fpc_deb.sh fpc ~/freepascal/fpc<br />
<br />
Falls Sie eine Fehlermeldung über eine fehlende Datei oder ein fehlendes Werkzeug erhalten müssen Sie das fehlende Package nachinstallieren. Falls Sie eine Kompiler-Fehlermeldung erhalten, dann ist Ihr installierter FPC nicht die offizielle Version oder Sie hatten Pech und haben sich eine fehlerhafte SVN-Version heruntergeladen. Suchen Sie Hilfe über die Mailing-Liste, das Forum oder den Chat.<br />
Falls alles geklappt hat, haben Sie jetzt eine .deb-Datei, die Sie installieren können:<br />
<br />
sudo dpkg -i fpc_2.5.1-091121_i386.deb<br />
<br />
Der Dateiname wird bei Ihnen etwas anders lauten.<br />
<br />
===Erstellen eines RPM-Packages===<br />
<br />
ToDo...<br />
<br />
===Lazarus für den neuen FPC einrichten===<br />
<br />
FPC ist jetzt installiert, entweder mittels "make install" oder dadurch, dass Sie ein distributionsspezifisches Package verwenden.<br />
Der nächste Schritt ist das Kompilieren von Lazarus SVN mit dem neuen Compiler und die IDE anzuweisen, das Verzeichnis ''/home/username/freepascal/fpc'' als ''FPC Quelltext-Verzeichnis'' zu benutzen.<br />
<br />
Falls Sie Lazarus SVN bislang noch nicht heruntergeladen haben, tun Sie das jetzt: [[Getting_Lazarus#Development_versions_from_SVN|Development versions from SVN]]. Zum Beispiel:<br />
<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus<br />
<br />
Dies wird einige Zeit dauern, anschließend geht es weiter mit:<br />
cd ~/freepascal/lazarus<br />
make clean all<br />
<br />
Wenn Sie dabei Linker-Fehlermeldungen erhalten, müssen Sie einige zusätzliche Packages installieren (build-essential, libgtk2.0-dev,libgdk-pixbuf-dev).<br />
Starten Sie die IDE:<br />
cd ~/freepascal/lazarus<br />
./lazarus<br />
<br />
Das ist eine minimalistische IDE ohne irgendwelche Extra-Packages. Nun muss die IDE eingerichtet werden, dann kann sie mit den Packages erstellt werden: <br />
<br />
* Gehen Sie zu Werkzeuge / Einstellungen / Umgebung <br />
* Setzen Sie das ''Lazarus-Verzeichnis'' auf ''/home/username/freepascal/lazarus'' <br />
* Setzen Sie das ''FPC-Quelltextverzeichnis'' auf ''/home/username/freepascal/fpc''<br />
* Klicken Sie auf ''Ok''. Das schließt den Dialog.<br />
* Werkzeuge / Lazarus kompilieren einrichten / Quick Build Options / IDE mit Packages neu kompilieren<br />
* Klicken Sie auf ''Neu kompilieren''.<br />
* Starten Sie die IDE neu<br />
* Jetzt haben Sie die neueste und beste IDE, erstellt mit dem neuesten und besten FPC.<br />
<br />
== Entwicklungsversionen über Git holen ==<br />
Es gibt einen [[git mirrors|Git Spiegelserver]] des offiziellen SubVersion-Repository der über [http://github.com/ GitHub] erreichbar ist. Dieser Spiegelserver wird alle 15 Minuten mit dem SubVersion-Repository abgeglichen. Für weitere Informationen darüber, wie Sie [http://git-scm.com/ Git] erhalten können und damit das Lazarus-Repository klonen können, folgen Sie diesem Link: [[git mirrors|Git Mirrors]].<br />
Sie können 'git' auch direkt über den SubVersion-Server erreichen; nehmen Sie den Link 'git-svn'. Siehe [[Lazarus git-svn|Lazarus git-svn]] für weitere Details.<br />
<br />
== Entwicklungsversionen über Mercurial holen==<br />
<s>There is a Hg mirror of the official SubVersion repository being maintained on [http://florianklaempfl.de:8000/lazarustrunk/ florianklaempfl.de].</s><br />
<br />
Dieser Mirror existiert nicht mehr. Siehe die [http://lists.freepascal.org/lists/fpc-devel/2010-June/020442.html Mitteilung] von Florian Klämpfl.<br />
<br />
==Schnappschuss-Methode==<br />
<br />
Wenn Sie SVN nicht direkt verwenden wollen, können sie einen täglich aktualisierten Schnappschuss ausprobieren. Eine Liste der Mirrors finden Sie auf der Seite [[Lazarus Snapshots Downloads]].<br />
<br />
==Verwenden von fpclazup==<br />
In einem [http://forum.lazarus.freepascal.org/index.php/topic,27211.225.html Forenbeitrag von DonAlfredo vom 04.01.2017] schreibt dieser, die fpc'''laz'''up Binaries würden nicht länger wie bisher als Teil eines commits der fpc(laz)up-Quellen verteilt, sondern seien künftig ein separates Release: [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases].<br />
<br />
Um auf einem diesbezüglich noch völlig "blanken" Rechner ein aktuelles fpc und Lazarus zu installieren, geht man also wie folgt vor:<br />
<br />
* Download des passenden Binaries (z.B. fpclazup-x86_64-linux) von [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases]<br />
* Installieren der erforderlichen Bibliotheken und Werkzeuge (nachzulesen im [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/blob/master/Readme.TXT Readme.TXT])<br />
* unter Linux: das heruntergeladene Binary ausführbar machen (z.B. mit ''chmod a+x fpclazup-x86_64-linux'')<br />
* Starten des Binaries<br />
<br />
Bei einem erfolgreichen Programmlauf sollten in der Ausgabe nur Zeilen der Art <br />
fpclazup: info: ...<br />
auftauchen (einzige Ausnahme ein "WARNING: ~/development/lazarus/docs/chm/lcl/lcl.chm was created but is empty"), sonst sind noch nicht alle Installationsvoraussetzungen erfüllt, man bekommt von der Ausgabe sachdienliche Hinweise und kann von vorn beginnen.<br />
<br />
Hat man alles mit den Standardeinstellungen laufen lassen, sollte anschließend mit knapp 1 GB wohlbefüllte Verzeichnis<br />
"~/development/lazarus/" existieren und sich darin "startlazarus" starten lassen.<br />
<br />
Mit dem ersten Aufruf von ''fpclazup'' sind des weiteren im selben Verzeichnis die Konfigurationsdateien "fpcup.ini" und "settings.ini" enstanden, die man nun nach den eigenen Wünschen konfigurieren und den Erstellvorgang dann wiederholen kann.<br />
<br />
Paßt alles, sollte man mit den drei Dateien (fpclazup-x86_64-linux, fpcup.ini und settings.ini) auch weitere Rechner reproduzierbar mit Lazarus in der gewünschten Konfiguration ausstatten können.<br />
<br />
<br />
Eine interessante Alternative zumindest unter Linux könnte das Verpacken einer so erstellten Installation in zur Distribution (z.B. Ubuntu/Linux) sein. Die aktuelle Installation wäre damit zum einen archiviert, zum anderen ließe sie sich bandbreitenschonend auf mehrere Rechner verteilen, ohne jeweils neu die knapp 2 GB aus den Repositories herunterladen zu müssen.<br />
<br />
==Durchsuchen des Quelltext-Repositorys mit einem Web-Browser==<br />
<br />
Die Inhalte des SVN-Archivs können auch mit einem Web-Browser durchsucht werden über die [http://www.freepascal.org/cgi-bin/viewcvs.cgi/?root=lazarus ViewCVS] Schnittstelle.<br />
<br />
==Lazarus Distributionen==<br />
<br />
Es gibt einige inoffizielle Seiten, wo Sie Lazarus und Free Pascal ebenfalls finden können:<br />
*You can get a Ubuntu LiveCD from Austrian University of Applied Sciences hosting <br />
http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso<br />
und die md5sum Datei http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso.md5.<br />
<br />
==Mitwirkende und Änderungen==<br />
<br />
Diese Seite wurde konvertiert von der epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=GettingLazarus Version].<br />
<br />
[[Category:Lazarus/de]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Getting_Lazarus/de&diff=107017Getting Lazarus/de2017-02-02T11:04:53Z<p>Arabidopsis: /* Verwenden von fpclazup */</p>
<hr />
<div>{{Getting Lazarus}}<br />
<br />
==Download und Installation einer offiziellen Version von Lazarus==<br />
<br />
=== Von SourceForge ===<br />
<br />
Binäre Releases für verschiedene Plattformen sind hier [http://sourceforge.net/project/showfiles.php?group_id=89339 Lazarus Sourceforge Download Bereich] verfügbar.<br />
<br />
=== Für bestimmte Plattformen ===<br />
<br />
Lazarus für Windows erhalten - benutzen Sie den obigen Link zu Sourceforge.<br />
<br />
[[Lazarus release version for Ubuntu|Get Lazarus for Ubuntu]]<br />
<br />
[[Lazarus release version for Fedora|Get Lazarus for Fedora]]<br />
<br />
[[Lazarus release version for Suse|Get Lazarus for Suse]]<br />
<br />
[[Lazarus release version for Mandriva|Get Lazarus for Mandriva]]<br />
<br />
[[Lazarus release version for Mac|Get Lazarus for Mac]]<br />
<br />
[[Lazarus on Solaris]]<br />
<br />
== Holen Sie sich SVN==<br />
<br />
=== TortoiseSVN Client ===<br />
<br />
TortoiseSVN ist ein SVN-Client nur für Windows. Sie können ihn von http://tortoisesvn.tigris.org/ herunterladen. Das Programm unterstützt zunächst nur die englische Sprache. Weitere Sprachen (z.B. Deutsch) müssen durch separate Pakete (auf der selben Seite erhältlich) nachgerüstet werden.<br />
<br />
[[TortoiseSvn|Diese Seite]] zeigt Ihnen, wie Sie Lazarus SVN Quelltexte herunterladen und aktualisieren können. Aber auch für FPC-Quelltexte ist dieses Verfahren in gleicher Weise anwendbar.<br />
<br />
=== Andere SVN-Clients ===<br />
<br />
Ein SVN-Kommandozeilen-Client ist von der offiziellen SVN [http://subversion.tigris.org/ Internetseite] für viele Plattformen erhältlich.<br />
Unter Linux wird empfohlen, ''Subversion'' mit dem Paketmanagementsystems ihrer Distribution zu installieren. Zum Beispiel:<br />
<br />
sudo apt-get install subversion<br />
<br />
Mac OS X enthält svn ab der Version 10.5. Bei älteren Versionen müssen Sie es selbst installieren.<br />
<br />
==Holen Sie sich eine Lazarus SVN Entwicklungsversion==<br />
<br />
=== Von der Kommandozeile aus ===<br />
<br />
Um Lazarus zum ersten Mal zu erhalten:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Verzeichnis, in dem Sie den Lazarus-Ordner erstellen wollen und tippen Sie:<br />
<nowiki>svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Um die Lazarus-Quellen zu aktualisieren:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Lazarus-Verzeichnis und tippen Sie:<br />
svn update<br />
<br />
Zum Kompilieren siehe [[#Compiling_and_installing_Lazarus|hier]].<br />
<br />
===Alternative URLs===<br />
Manchmal funktioniert die oben genannte URL des Repository nicht, weil sich zwischen Ihnen und dem SVN-Server ein http-Proxy-Server befindet. Dieser Server soll zwar oft ein 'transparenter' Proxy sein, aber er leitet Ihre SVN-Kommandos nicht korrekt an den Server svn.freepascal.org weiter.<br />
<br />
Der svn.freepascal.org Server hat aber auch den Port 8080 offen. Vielleicht mischt sich der Proxy-Server nicht in den http-Datenverkehr über diesen Port ein. Deshalb können Sie auch folgendes probieren:<br />
<nowiki>svn co http://svn.freepascal.org:8080/svn/lazarus/trunk lazarus</nowiki> <br />
<br />
Das Lazarus-SVN-Repository wird auf Sourceforge mit einer Verzögerung von 3 Minuten unter Verwendung von svnsync gespiegelt. Das Sourceforge-Repository verwendet das https-Protokoll. Proxy-Server mischen sich bei diesem Protokoll nicht ein. Sie können demnach auch von Sourceforge mit dem folgenden Kommando 'auschecken' (checkout):<br />
<nowiki>svn co https://svn.sourceforge.net/svnroot/lazarus/trunk lazarus</nowiki><br />
<br />
Die FPC- und Lazarus-SVN-Repositories werden auch auf svn2.freepascal.org gespiegelt. Sie können von svn2.freepascal.org aus-checken mit <br />
<nowiki>svn co http://svn2.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Wenn Sie selbst den Proxy-Server verwalten, oder mit dem Verwalter befreundet sind, gibt es hier Details zur Einrichtung des Proxys zum Weiterleiten der SVN-Befehle: http://subversion.tigris.org/faq.html#proxy Dies enthält ein Beispiel für 'squid'. Vergessen Sie nicht, den SVN-Client für die Benutzung des Proxys einzurichten! (Für TortoiseSVN, siehe 'settings/network').<br />
<br />
===Skripte===<br />
<br />
Es gibt Skripte für Windows und Linux, um das Herunterladen und Erstellen von Lazarus zu automatisieren: [[LazarusScripts|Scripts for Lazarus]]<br />
<br />
==Kompilieren und Installieren von Lazarus==<br />
<br />
Siehe [[Installing Lazarus]] - ein detaillierter Installationsführer, oder http://www.stack.nl/~marcov/buildfaq.pdf - eine noch detailliertere Anleitung.<br />
<br />
===Von der Kommandozeile aus===<br />
<br />
Lazarus wird mit einem Makefile für das GNU "make" Programm geliefert. <br />
<br />
{{Warning|Wenn Sie auch Tools von Codegear (oder Borland) installiert haben, könnte dadurch ein Konflikt mit GNU "make" entstehen}}<br />
<br />
Dieses Tool erlaubt es, Lazarus einfach von der Befehlszeile zu kompilieren. <br />
Sie müssen allerdings zuerst FPC und die FPC-Packages installiert und konfiguriert haben.<br />
<br />
Um zu kompilieren wechseln Sie in der Befehlszeile/einem Terminal in das Lazarus-Verzeichnis und geben ein:<br />
make<br />
<br />
Dadurch werden LCL und Lazarus IDE (mit den installierten Standardpackages) neu erstellt.<br />
<br />
===Make targets===<br />
Die folgenden Kompilier-Profile ("targets") können für das Programm "make" angegeben werden:<br />
<br />
* '''clean''' - the command will clean all compiled LCL and IDE units. Warning, this might make your project uncompilable (even though IDE still run, since binary is not deleted). Zum Beispiel: "''make clean''"<br />
<br />
* '''bigide''' - Dieses Kommando erstellt LCL und IDE mit zusätzlichen Packages neu. Zum Beispiel: "''make bigide''"<br />
<br />
* '''lcl''' - dieser Befehl erstellt nur die LCL neu. Die IDE wird nicht angefasst. Das Kommando ist sehr hilfreich, wenn Sie Änderungen an der LCL vornehmen und testen müssen, wie sich die Änderungen auf ihr Projekt auswirken, ohne die Gefahr, dass Lazarus nicht mehr funktioniert. Das Neuerstellen nur der LCL geht schneller als das Neuerstellen von LCL und IDE zusammen. Zum Beispiel: "''make lcl''"<br />
<br />
* '''components'''<br />
* '''packager/registration'''<br />
* '''ideintf''' <br />
* '''packager'''<br />
* '''bigidecomponents'''<br />
* '''ide''' <br />
* '''idepkg''' <br />
* '''idebig''' <br />
* '''bigide''' <br />
* '''starter''' - the command rebuilds startlazarus binary.<br />
* '''lazbuilder'''<br />
* '''tools''' <br />
* '''all''' <br />
* '''cleanide'''<br />
* '''purge'''<br />
* '''examples''' - the command rebuilds examples lazarus <br />
* '''install''' <br />
* '''lazbuild'''<br />
<br />
<br />
Wenn kein Profil angegeben ist, werden LCL und Lazarus IDE (mit einem Basisset von Komponenten) neu erstellt.<br />
<br />
===Make parameters===<br />
Es gibt zusätzliche Parameter, die für die Erstellung von Lazarus verwendet werden können.<br />
<br />
* '''OPT'''=%compiler_switches<br />
the %compiler_switches is passed to each fpc call. The option is useful for specifying defines<br />
<br />
Zum Beispiel:<br />
make bigide OPT="-dNoGdkPixBufLib -gw2" <br />
erstellt LCL und IDE mit der Option NoGdkPixBufLib sowie dwarf2 Debugging-Informationen. <br />
<br />
* '''LCL_PLATFORM'''=%platform<br />
%platform is the target Widgetset. Es kann win32, gtk, gtk2, qt, carbon oder cocoa sein.<br />
<br />
Zum Beispiel:<br />
make LCL_PLATFORM=gtk2<br />
Erstellt LCL und IDE für das gtk2 Widgetset neu<br />
<br />
* '''FPC'''=%compiler_path<br />
or<br />
* '''PP'''=%compiler_path<br />
%compiler_path is the path to a custom compiler binary you want to build the target with.<br />
<br />
==Holen Sie sich eine FPC SVN Entwicklungsversion==<br />
<br />
Hier sind einige Tipps, wie Sie sich die Entwicklungsversion von FPC (aktuell: 2.5.1) besorgen und installieren können. Diese enthält neue Features und Fehlerkorrekturen, ist aber weniger stabil und enthält auch vermutlich neue Fehler.<br />
Der Compiler ist nicht im Lazarus SVN enthalten, hat aber sein eigenes FPC SVN. Sie ''müssen'' zuerst die letzte offizielle Version von FPC installieren. Laden Sie sie von hier http://sourceforge.net/projects/freepascal/ herunter und installieren Sie sie. Oder lesen Sie weitere Details hier: [[Installing_Lazarus#Installing_The_Free_Pascal_Compiler|Installing the Free Pascal Compiler]].<br />
<br />
Erzeugen Sie dann ein Verzeichnis und laden Sie FPC von SVN herunter:<br />
<br />
mkdir -p ~/freepascal<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/fpc/trunk fpc<br />
<br />
Dies wird einige Zeit dauern.<br />
<br />
Sie können allerdings auch den TortoiseSVN-Client für Windows einsetzen wie bereits zuvor beschrieben.<br />
<br />
==Kompilieren und Installieren von FPC==<br />
<br />
Es gibt viele Arten, FPC zu kompilieren und zu installieren.<br />
<br />
* Benutzen Sie einfach ''make''.<br />
* Erstellen Sie ein FPC-Package für Ihre Linux-Distribution (.deb oder .rpm Datei). Das Package erlaubt es, FPC einfach zu deinstallieren, zu upgraden oder downgraden und stellt sicher, dass alle Dateien in die richtigen Verzeichnisse installiert werden. Wenn also irgend etwas schief läuft, können Ihnen andere Benutzer zu Hilfe kommen.<br />
<br />
In jedem Fall muss Lazarus abschließend noch für den neuen FPC konfiguriert werden.<br />
<br />
===Erstellen und Installieren von Free Pascal unter UNIX-ähnlichen Systemen===<br />
<br />
Die folgenden Instruktionen gelten für UNIX-ähnliche Plattformen, wie z.B. Linux, aber auch für Mac OS X.<br />
<br />
Free Pascal aus dem Quellcode zu erstellen, kann in einigen Situationen nützlich sein. Ein Beispiel stellt das Debuggen eines Problems im Compiler dar, in der RTL oder in der FCL. Die ausgelieferten FPC-Installationen kommen ohne Debug-Informationen daher, aber Installationen, die mittels der Makefiles erstellt wurden, enthalten diese Debug-Informationen als Vorgabe. Ein weiteres Anwendungsbeispiel ist das Austesten einer Entwicklungsversion des Compilers, obwohl dafür oftmals auch Schnappschüsse verfügbar sind.<br />
<br />
<b>Schritt 1 - Stellen Sie sicher, dass Sie einen kompatiblen, startenden Compiler installiert haben.</b><br />
<br />
Üblicherweise bedeutet das, dass Sie die letzte stabile Version installiert haben.<br />
<br />
<b>Schritt 2 - Laden Sie die Quelltexte des neuen Compilers herunter</b><br />
<br />
Als erstes sollten Sie den Free Pascal Quellcode der Version herunterladen, die Sie zu erstellen wünschen. Um, zum Beispiel, die letzten Fixes des 2.4 Zweiges herunter zu laden, geben Sie ein:<br />
<br />
svn checkout http://svn.freepascal.org/svn/fpc/branches/fixes_2_4 fpcfixes2_4<br />
<br />
<b>Schritt 3 - Erstellen des Compilers</b><br />
<br />
Wechseln Sie nun in das neu erzeugte Verzeichnis und erstellen und installieren Sie Free Pascal:<br />
<br />
cd fpcfixes2_4<br />
make clean all install INSTALL_PREFIX=~<br />
<br />
Dadurch wird der Compiler in 3 Durchläufen übersetzt, indem zuerst der bereits installierte Compiler und dann der neu übersetzte Compiler benutzt wird.<br />
<br />
Es installiert alle benötigten Dateien im angegebenen Verzeichnis. Falls nötig, installieren Sie in ein anderes Verzeichnis. Sie müssen allerdings mit dem Root-Konto angemeldet sein, bzw. Administrator-Rechte haben, wenn mit einem normalen Benutzerkonto kein Schreibzugriff auf dieses Verzeichnis möglich ist.<br />
<br />
<b>Schritt 4 - Aktualisieren Sie Ihre fpc.cfg Datei</b><br />
<br />
Dann erzeugen Sie die Datei<br />
~/.fpc.cfg<br />
<br />
Dies ist eine verborgene Datei (beachten Sie den ersten Punkt). Geben Sie folgende Zeilen in diese Datei ein. Falls Sie in ein anderes Verzeichnis installiert haben, nehmen Sie statt dessen Ihr eigenes home-Verzeichnis.<br />
<br />
#include /etc/fpc.cfg<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/*<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/rtl<br />
<br />
Dadurch werden zukünftige Versionen in PREFIX=~ installiert, ohne diese Konfigurationsdatei anzurühren.<br />
<br />
Um fpc zu starten, muss ~/bin in der Umgebungsvariablen PATH stehen. Normalerweise ist es bereits standardgemäß dort.<br />
Sie müssen auch ~/lib/fpc/2.5.1 an PATH anfügen, weil sich das aktuelle Compiler-Binary dort befindet.<br />
Die meisten Linuxsysteme verwenden die Bash-Shell und diese Einstellung kann zur Datei ~/.bashrc (wieder eine versteckte Datei) hinzugefügt werden:<br />
export PATH=~/lib/fpc/2.5.1:$PATH<br />
<br />
Beachten Sie: Der Pfadseparator ist ":" unter Linux (";" unter Windows). Lesen Sie nun "Configure Lazarus for the new fpc" unten für den nächsten Schritt.<br />
<br />
===Erstellen eines Debian/Ubuntu Packages===<br />
<br />
'''Wichtig''': Dieses Skript erzeugt '''nicht''' die offiziellen Debian/Ubuntu Packages. Es erzeugt ein FPC-Package das den Compiler und alle benötigten Packages enthält. <br />
<br />
Um dieses Package zu erstellen, müssen Sie zuerst einige Packages installieren:<br />
<br />
sudo apt-get install libgpmg1-dev fakeroot libncurses5-dev build-essential<br />
<br />
Gehen Sie in das Lazarus Quelltextverzeichnis. Dieses Verzeichnis muss die Schreibrechte besitzen.<br />
<br />
cd ~/freepascal/lazarus/tools/install<br />
./create_fpc_deb.sh fpc ~/freepascal/fpc<br />
<br />
Falls Sie eine Fehlermeldung über eine fehlende Datei oder ein fehlendes Werkzeug erhalten müssen Sie das fehlende Package nachinstallieren. Falls Sie eine Kompiler-Fehlermeldung erhalten, dann ist Ihr installierter FPC nicht die offizielle Version oder Sie hatten Pech und haben sich eine fehlerhafte SVN-Version heruntergeladen. Suchen Sie Hilfe über die Mailing-Liste, das Forum oder den Chat.<br />
Falls alles geklappt hat, haben Sie jetzt eine .deb-Datei, die Sie installieren können:<br />
<br />
sudo dpkg -i fpc_2.5.1-091121_i386.deb<br />
<br />
Der Dateiname wird bei Ihnen etwas anders lauten.<br />
<br />
===Erstellen eines RPM-Packages===<br />
<br />
ToDo...<br />
<br />
===Lazarus für den neuen FPC einrichten===<br />
<br />
FPC ist jetzt installiert, entweder mittels "make install" oder dadurch, dass Sie ein distributionsspezifisches Package verwenden.<br />
Der nächste Schritt ist das Kompilieren von Lazarus SVN mit dem neuen Compiler und die IDE anzuweisen, das Verzeichnis ''/home/username/freepascal/fpc'' als ''FPC Quelltext-Verzeichnis'' zu benutzen.<br />
<br />
Falls Sie Lazarus SVN bislang noch nicht heruntergeladen haben, tun Sie das jetzt: [[Getting_Lazarus#Development_versions_from_SVN|Development versions from SVN]]. Zum Beispiel:<br />
<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus<br />
<br />
Dies wird einige Zeit dauern, anschließend geht es weiter mit:<br />
cd ~/freepascal/lazarus<br />
make clean all<br />
<br />
Wenn Sie dabei Linker-Fehlermeldungen erhalten, müssen Sie einige zusätzliche Packages installieren (build-essential, libgtk2.0-dev,libgdk-pixbuf-dev).<br />
Starten Sie die IDE:<br />
cd ~/freepascal/lazarus<br />
./lazarus<br />
<br />
Das ist eine minimalistische IDE ohne irgendwelche Extra-Packages. Nun muss die IDE eingerichtet werden, dann kann sie mit den Packages erstellt werden: <br />
<br />
* Gehen Sie zu Werkzeuge / Einstellungen / Umgebung <br />
* Setzen Sie das ''Lazarus-Verzeichnis'' auf ''/home/username/freepascal/lazarus'' <br />
* Setzen Sie das ''FPC-Quelltextverzeichnis'' auf ''/home/username/freepascal/fpc''<br />
* Klicken Sie auf ''Ok''. Das schließt den Dialog.<br />
* Werkzeuge / Lazarus kompilieren einrichten / Quick Build Options / IDE mit Packages neu kompilieren<br />
* Klicken Sie auf ''Neu kompilieren''.<br />
* Starten Sie die IDE neu<br />
* Jetzt haben Sie die neueste und beste IDE, erstellt mit dem neuesten und besten FPC.<br />
<br />
== Entwicklungsversionen über Git holen ==<br />
Es gibt einen [[git mirrors|Git Spiegelserver]] des offiziellen SubVersion-Repository der über [http://github.com/ GitHub] erreichbar ist. Dieser Spiegelserver wird alle 15 Minuten mit dem SubVersion-Repository abgeglichen. Für weitere Informationen darüber, wie Sie [http://git-scm.com/ Git] erhalten können und damit das Lazarus-Repository klonen können, folgen Sie diesem Link: [[git mirrors|Git Mirrors]].<br />
Sie können 'git' auch direkt über den SubVersion-Server erreichen; nehmen Sie den Link 'git-svn'. Siehe [[Lazarus git-svn|Lazarus git-svn]] für weitere Details.<br />
<br />
== Entwicklungsversionen über Mercurial holen==<br />
<s>There is a Hg mirror of the official SubVersion repository being maintained on [http://florianklaempfl.de:8000/lazarustrunk/ florianklaempfl.de].</s><br />
<br />
Dieser Mirror existiert nicht mehr. Siehe die [http://lists.freepascal.org/lists/fpc-devel/2010-June/020442.html Mitteilung] von Florian Klämpfl.<br />
<br />
==Schnappschuss-Methode==<br />
<br />
Wenn Sie SVN nicht direkt verwenden wollen, können sie einen täglich aktualisierten Schnappschuss ausprobieren. Eine Liste der Mirrors finden Sie auf der Seite [[Lazarus Snapshots Downloads]].<br />
<br />
==Verwenden von fpclazup==<br />
In einem [http://forum.lazarus.freepascal.org/index.php/topic,27211.225.html Forenbeitrag von DonAlfredo vom 04.01.2017] schreibt dieser, die fpc'''laz'''up Binaries würden nicht länger wie bisher als Teil eines commits der fpc(laz)up-Quellen verteilt, sondern seien künftig ein separates Release: [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases].<br />
<br />
Um auf einem diesbezüglich noch völlig "blanken" Rechner ein aktuelles fpc und Lazarus zu installieren, geht man also wie folgt vor:<br />
<br />
* Download des passenden Binaries (z.B. fpclazup-x86_64-linux) von [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases]<br />
* Installieren der erforderlichen Bibliotheken und Werkzeuge (nachzulesen im [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/blob/master/Readme.TXT Readme.TXT])<br />
* unter Linux: das heruntergeladene Binary ausführbar machen (z.B. <pre>chmod a+x fpclazup-x86_64-linux</pre>)<br />
* Starten des Binaries<br />
<br />
Bei einem erfolgreichen Programmlauf sollten in der Ausgabe nur Zeilen der Art <br />
fpclazup: info: ...<br />
auftauchen (einzige Ausnahme ein "WARNING: ~/development/lazarus/docs/chm/lcl/lcl.chm was created but is empty"), sonst sind noch nicht alle Installationsvoraussetzungen erfüllt, man bekommt von der Ausgabe sachdienliche Hinweise und kann von vorn beginnen.<br />
<br />
Hat man alles mit den Standardeinstellungen laufen lassen, sollte anschließend mit knapp 1 GB wohlbefüllte Verzeichnis<br />
"~/development/lazarus/" existieren und sich darin "startlazarus" starten lassen.<br />
<br />
Mit dem ersten Aufruf von ''fpclazup'' sind des weiteren im selben Verzeichnis die Konfigurationsdateien "fpcup.ini" und "settings.ini" enstanden, die man nun nach den eigenen Wünschen konfigurieren und den Erstellvorgang dann wiederholen kann.<br />
<br />
Paßt alles, sollte man mit den drei Dateien (fpclazup-x86_64-linux, fpcup.ini und settings.ini) auch weitere Rechner reproduzierbar mit Lazarus in der gewünschten Konfiguration ausstatten können.<br />
<br />
<br />
Eine interessante Alternative zumindest unter Linux könnte das Verpacken einer so erstellten Installation in zur Distribution (z.B. Ubuntu/Linux) sein. Die aktuelle Installation wäre damit zum einen archiviert, zum anderen ließe sie sich bandbreitenschonend auf mehrere Rechner verteilen, ohne jeweils neu die knapp 2 GB aus den Repositories herunterladen zu müssen.<br />
<br />
==Durchsuchen des Quelltext-Repositorys mit einem Web-Browser==<br />
<br />
Die Inhalte des SVN-Archivs können auch mit einem Web-Browser durchsucht werden über die [http://www.freepascal.org/cgi-bin/viewcvs.cgi/?root=lazarus ViewCVS] Schnittstelle.<br />
<br />
==Lazarus Distributionen==<br />
<br />
Es gibt einige inoffizielle Seiten, wo Sie Lazarus und Free Pascal ebenfalls finden können:<br />
*You can get a Ubuntu LiveCD from Austrian University of Applied Sciences hosting <br />
http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso<br />
und die md5sum Datei http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso.md5.<br />
<br />
==Mitwirkende und Änderungen==<br />
<br />
Diese Seite wurde konvertiert von der epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=GettingLazarus Version].<br />
<br />
[[Category:Lazarus/de]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Getting_Lazarus/de&diff=107016Getting Lazarus/de2017-02-02T11:01:22Z<p>Arabidopsis: /* Verwenden von fpclazup */</p>
<hr />
<div>{{Getting Lazarus}}<br />
<br />
==Download und Installation einer offiziellen Version von Lazarus==<br />
<br />
=== Von SourceForge ===<br />
<br />
Binäre Releases für verschiedene Plattformen sind hier [http://sourceforge.net/project/showfiles.php?group_id=89339 Lazarus Sourceforge Download Bereich] verfügbar.<br />
<br />
=== Für bestimmte Plattformen ===<br />
<br />
Lazarus für Windows erhalten - benutzen Sie den obigen Link zu Sourceforge.<br />
<br />
[[Lazarus release version for Ubuntu|Get Lazarus for Ubuntu]]<br />
<br />
[[Lazarus release version for Fedora|Get Lazarus for Fedora]]<br />
<br />
[[Lazarus release version for Suse|Get Lazarus for Suse]]<br />
<br />
[[Lazarus release version for Mandriva|Get Lazarus for Mandriva]]<br />
<br />
[[Lazarus release version for Mac|Get Lazarus for Mac]]<br />
<br />
[[Lazarus on Solaris]]<br />
<br />
== Holen Sie sich SVN==<br />
<br />
=== TortoiseSVN Client ===<br />
<br />
TortoiseSVN ist ein SVN-Client nur für Windows. Sie können ihn von http://tortoisesvn.tigris.org/ herunterladen. Das Programm unterstützt zunächst nur die englische Sprache. Weitere Sprachen (z.B. Deutsch) müssen durch separate Pakete (auf der selben Seite erhältlich) nachgerüstet werden.<br />
<br />
[[TortoiseSvn|Diese Seite]] zeigt Ihnen, wie Sie Lazarus SVN Quelltexte herunterladen und aktualisieren können. Aber auch für FPC-Quelltexte ist dieses Verfahren in gleicher Weise anwendbar.<br />
<br />
=== Andere SVN-Clients ===<br />
<br />
Ein SVN-Kommandozeilen-Client ist von der offiziellen SVN [http://subversion.tigris.org/ Internetseite] für viele Plattformen erhältlich.<br />
Unter Linux wird empfohlen, ''Subversion'' mit dem Paketmanagementsystems ihrer Distribution zu installieren. Zum Beispiel:<br />
<br />
sudo apt-get install subversion<br />
<br />
Mac OS X enthält svn ab der Version 10.5. Bei älteren Versionen müssen Sie es selbst installieren.<br />
<br />
==Holen Sie sich eine Lazarus SVN Entwicklungsversion==<br />
<br />
=== Von der Kommandozeile aus ===<br />
<br />
Um Lazarus zum ersten Mal zu erhalten:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Verzeichnis, in dem Sie den Lazarus-Ordner erstellen wollen und tippen Sie:<br />
<nowiki>svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Um die Lazarus-Quellen zu aktualisieren:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Lazarus-Verzeichnis und tippen Sie:<br />
svn update<br />
<br />
Zum Kompilieren siehe [[#Compiling_and_installing_Lazarus|hier]].<br />
<br />
===Alternative URLs===<br />
Manchmal funktioniert die oben genannte URL des Repository nicht, weil sich zwischen Ihnen und dem SVN-Server ein http-Proxy-Server befindet. Dieser Server soll zwar oft ein 'transparenter' Proxy sein, aber er leitet Ihre SVN-Kommandos nicht korrekt an den Server svn.freepascal.org weiter.<br />
<br />
Der svn.freepascal.org Server hat aber auch den Port 8080 offen. Vielleicht mischt sich der Proxy-Server nicht in den http-Datenverkehr über diesen Port ein. Deshalb können Sie auch folgendes probieren:<br />
<nowiki>svn co http://svn.freepascal.org:8080/svn/lazarus/trunk lazarus</nowiki> <br />
<br />
Das Lazarus-SVN-Repository wird auf Sourceforge mit einer Verzögerung von 3 Minuten unter Verwendung von svnsync gespiegelt. Das Sourceforge-Repository verwendet das https-Protokoll. Proxy-Server mischen sich bei diesem Protokoll nicht ein. Sie können demnach auch von Sourceforge mit dem folgenden Kommando 'auschecken' (checkout):<br />
<nowiki>svn co https://svn.sourceforge.net/svnroot/lazarus/trunk lazarus</nowiki><br />
<br />
Die FPC- und Lazarus-SVN-Repositories werden auch auf svn2.freepascal.org gespiegelt. Sie können von svn2.freepascal.org aus-checken mit <br />
<nowiki>svn co http://svn2.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Wenn Sie selbst den Proxy-Server verwalten, oder mit dem Verwalter befreundet sind, gibt es hier Details zur Einrichtung des Proxys zum Weiterleiten der SVN-Befehle: http://subversion.tigris.org/faq.html#proxy Dies enthält ein Beispiel für 'squid'. Vergessen Sie nicht, den SVN-Client für die Benutzung des Proxys einzurichten! (Für TortoiseSVN, siehe 'settings/network').<br />
<br />
===Skripte===<br />
<br />
Es gibt Skripte für Windows und Linux, um das Herunterladen und Erstellen von Lazarus zu automatisieren: [[LazarusScripts|Scripts for Lazarus]]<br />
<br />
==Kompilieren und Installieren von Lazarus==<br />
<br />
Siehe [[Installing Lazarus]] - ein detaillierter Installationsführer, oder http://www.stack.nl/~marcov/buildfaq.pdf - eine noch detailliertere Anleitung.<br />
<br />
===Von der Kommandozeile aus===<br />
<br />
Lazarus wird mit einem Makefile für das GNU "make" Programm geliefert. <br />
<br />
{{Warning|Wenn Sie auch Tools von Codegear (oder Borland) installiert haben, könnte dadurch ein Konflikt mit GNU "make" entstehen}}<br />
<br />
Dieses Tool erlaubt es, Lazarus einfach von der Befehlszeile zu kompilieren. <br />
Sie müssen allerdings zuerst FPC und die FPC-Packages installiert und konfiguriert haben.<br />
<br />
Um zu kompilieren wechseln Sie in der Befehlszeile/einem Terminal in das Lazarus-Verzeichnis und geben ein:<br />
make<br />
<br />
Dadurch werden LCL und Lazarus IDE (mit den installierten Standardpackages) neu erstellt.<br />
<br />
===Make targets===<br />
Die folgenden Kompilier-Profile ("targets") können für das Programm "make" angegeben werden:<br />
<br />
* '''clean''' - the command will clean all compiled LCL and IDE units. Warning, this might make your project uncompilable (even though IDE still run, since binary is not deleted). Zum Beispiel: "''make clean''"<br />
<br />
* '''bigide''' - Dieses Kommando erstellt LCL und IDE mit zusätzlichen Packages neu. Zum Beispiel: "''make bigide''"<br />
<br />
* '''lcl''' - dieser Befehl erstellt nur die LCL neu. Die IDE wird nicht angefasst. Das Kommando ist sehr hilfreich, wenn Sie Änderungen an der LCL vornehmen und testen müssen, wie sich die Änderungen auf ihr Projekt auswirken, ohne die Gefahr, dass Lazarus nicht mehr funktioniert. Das Neuerstellen nur der LCL geht schneller als das Neuerstellen von LCL und IDE zusammen. Zum Beispiel: "''make lcl''"<br />
<br />
* '''components'''<br />
* '''packager/registration'''<br />
* '''ideintf''' <br />
* '''packager'''<br />
* '''bigidecomponents'''<br />
* '''ide''' <br />
* '''idepkg''' <br />
* '''idebig''' <br />
* '''bigide''' <br />
* '''starter''' - the command rebuilds startlazarus binary.<br />
* '''lazbuilder'''<br />
* '''tools''' <br />
* '''all''' <br />
* '''cleanide'''<br />
* '''purge'''<br />
* '''examples''' - the command rebuilds examples lazarus <br />
* '''install''' <br />
* '''lazbuild'''<br />
<br />
<br />
Wenn kein Profil angegeben ist, werden LCL und Lazarus IDE (mit einem Basisset von Komponenten) neu erstellt.<br />
<br />
===Make parameters===<br />
Es gibt zusätzliche Parameter, die für die Erstellung von Lazarus verwendet werden können.<br />
<br />
* '''OPT'''=%compiler_switches<br />
the %compiler_switches is passed to each fpc call. The option is useful for specifying defines<br />
<br />
Zum Beispiel:<br />
make bigide OPT="-dNoGdkPixBufLib -gw2" <br />
erstellt LCL und IDE mit der Option NoGdkPixBufLib sowie dwarf2 Debugging-Informationen. <br />
<br />
* '''LCL_PLATFORM'''=%platform<br />
%platform is the target Widgetset. Es kann win32, gtk, gtk2, qt, carbon oder cocoa sein.<br />
<br />
Zum Beispiel:<br />
make LCL_PLATFORM=gtk2<br />
Erstellt LCL und IDE für das gtk2 Widgetset neu<br />
<br />
* '''FPC'''=%compiler_path<br />
or<br />
* '''PP'''=%compiler_path<br />
%compiler_path is the path to a custom compiler binary you want to build the target with.<br />
<br />
==Holen Sie sich eine FPC SVN Entwicklungsversion==<br />
<br />
Hier sind einige Tipps, wie Sie sich die Entwicklungsversion von FPC (aktuell: 2.5.1) besorgen und installieren können. Diese enthält neue Features und Fehlerkorrekturen, ist aber weniger stabil und enthält auch vermutlich neue Fehler.<br />
Der Compiler ist nicht im Lazarus SVN enthalten, hat aber sein eigenes FPC SVN. Sie ''müssen'' zuerst die letzte offizielle Version von FPC installieren. Laden Sie sie von hier http://sourceforge.net/projects/freepascal/ herunter und installieren Sie sie. Oder lesen Sie weitere Details hier: [[Installing_Lazarus#Installing_The_Free_Pascal_Compiler|Installing the Free Pascal Compiler]].<br />
<br />
Erzeugen Sie dann ein Verzeichnis und laden Sie FPC von SVN herunter:<br />
<br />
mkdir -p ~/freepascal<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/fpc/trunk fpc<br />
<br />
Dies wird einige Zeit dauern.<br />
<br />
Sie können allerdings auch den TortoiseSVN-Client für Windows einsetzen wie bereits zuvor beschrieben.<br />
<br />
==Kompilieren und Installieren von FPC==<br />
<br />
Es gibt viele Arten, FPC zu kompilieren und zu installieren.<br />
<br />
* Benutzen Sie einfach ''make''.<br />
* Erstellen Sie ein FPC-Package für Ihre Linux-Distribution (.deb oder .rpm Datei). Das Package erlaubt es, FPC einfach zu deinstallieren, zu upgraden oder downgraden und stellt sicher, dass alle Dateien in die richtigen Verzeichnisse installiert werden. Wenn also irgend etwas schief läuft, können Ihnen andere Benutzer zu Hilfe kommen.<br />
<br />
In jedem Fall muss Lazarus abschließend noch für den neuen FPC konfiguriert werden.<br />
<br />
===Erstellen und Installieren von Free Pascal unter UNIX-ähnlichen Systemen===<br />
<br />
Die folgenden Instruktionen gelten für UNIX-ähnliche Plattformen, wie z.B. Linux, aber auch für Mac OS X.<br />
<br />
Free Pascal aus dem Quellcode zu erstellen, kann in einigen Situationen nützlich sein. Ein Beispiel stellt das Debuggen eines Problems im Compiler dar, in der RTL oder in der FCL. Die ausgelieferten FPC-Installationen kommen ohne Debug-Informationen daher, aber Installationen, die mittels der Makefiles erstellt wurden, enthalten diese Debug-Informationen als Vorgabe. Ein weiteres Anwendungsbeispiel ist das Austesten einer Entwicklungsversion des Compilers, obwohl dafür oftmals auch Schnappschüsse verfügbar sind.<br />
<br />
<b>Schritt 1 - Stellen Sie sicher, dass Sie einen kompatiblen, startenden Compiler installiert haben.</b><br />
<br />
Üblicherweise bedeutet das, dass Sie die letzte stabile Version installiert haben.<br />
<br />
<b>Schritt 2 - Laden Sie die Quelltexte des neuen Compilers herunter</b><br />
<br />
Als erstes sollten Sie den Free Pascal Quellcode der Version herunterladen, die Sie zu erstellen wünschen. Um, zum Beispiel, die letzten Fixes des 2.4 Zweiges herunter zu laden, geben Sie ein:<br />
<br />
svn checkout http://svn.freepascal.org/svn/fpc/branches/fixes_2_4 fpcfixes2_4<br />
<br />
<b>Schritt 3 - Erstellen des Compilers</b><br />
<br />
Wechseln Sie nun in das neu erzeugte Verzeichnis und erstellen und installieren Sie Free Pascal:<br />
<br />
cd fpcfixes2_4<br />
make clean all install INSTALL_PREFIX=~<br />
<br />
Dadurch wird der Compiler in 3 Durchläufen übersetzt, indem zuerst der bereits installierte Compiler und dann der neu übersetzte Compiler benutzt wird.<br />
<br />
Es installiert alle benötigten Dateien im angegebenen Verzeichnis. Falls nötig, installieren Sie in ein anderes Verzeichnis. Sie müssen allerdings mit dem Root-Konto angemeldet sein, bzw. Administrator-Rechte haben, wenn mit einem normalen Benutzerkonto kein Schreibzugriff auf dieses Verzeichnis möglich ist.<br />
<br />
<b>Schritt 4 - Aktualisieren Sie Ihre fpc.cfg Datei</b><br />
<br />
Dann erzeugen Sie die Datei<br />
~/.fpc.cfg<br />
<br />
Dies ist eine verborgene Datei (beachten Sie den ersten Punkt). Geben Sie folgende Zeilen in diese Datei ein. Falls Sie in ein anderes Verzeichnis installiert haben, nehmen Sie statt dessen Ihr eigenes home-Verzeichnis.<br />
<br />
#include /etc/fpc.cfg<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/*<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/rtl<br />
<br />
Dadurch werden zukünftige Versionen in PREFIX=~ installiert, ohne diese Konfigurationsdatei anzurühren.<br />
<br />
Um fpc zu starten, muss ~/bin in der Umgebungsvariablen PATH stehen. Normalerweise ist es bereits standardgemäß dort.<br />
Sie müssen auch ~/lib/fpc/2.5.1 an PATH anfügen, weil sich das aktuelle Compiler-Binary dort befindet.<br />
Die meisten Linuxsysteme verwenden die Bash-Shell und diese Einstellung kann zur Datei ~/.bashrc (wieder eine versteckte Datei) hinzugefügt werden:<br />
export PATH=~/lib/fpc/2.5.1:$PATH<br />
<br />
Beachten Sie: Der Pfadseparator ist ":" unter Linux (";" unter Windows). Lesen Sie nun "Configure Lazarus for the new fpc" unten für den nächsten Schritt.<br />
<br />
===Erstellen eines Debian/Ubuntu Packages===<br />
<br />
'''Wichtig''': Dieses Skript erzeugt '''nicht''' die offiziellen Debian/Ubuntu Packages. Es erzeugt ein FPC-Package das den Compiler und alle benötigten Packages enthält. <br />
<br />
Um dieses Package zu erstellen, müssen Sie zuerst einige Packages installieren:<br />
<br />
sudo apt-get install libgpmg1-dev fakeroot libncurses5-dev build-essential<br />
<br />
Gehen Sie in das Lazarus Quelltextverzeichnis. Dieses Verzeichnis muss die Schreibrechte besitzen.<br />
<br />
cd ~/freepascal/lazarus/tools/install<br />
./create_fpc_deb.sh fpc ~/freepascal/fpc<br />
<br />
Falls Sie eine Fehlermeldung über eine fehlende Datei oder ein fehlendes Werkzeug erhalten müssen Sie das fehlende Package nachinstallieren. Falls Sie eine Kompiler-Fehlermeldung erhalten, dann ist Ihr installierter FPC nicht die offizielle Version oder Sie hatten Pech und haben sich eine fehlerhafte SVN-Version heruntergeladen. Suchen Sie Hilfe über die Mailing-Liste, das Forum oder den Chat.<br />
Falls alles geklappt hat, haben Sie jetzt eine .deb-Datei, die Sie installieren können:<br />
<br />
sudo dpkg -i fpc_2.5.1-091121_i386.deb<br />
<br />
Der Dateiname wird bei Ihnen etwas anders lauten.<br />
<br />
===Erstellen eines RPM-Packages===<br />
<br />
ToDo...<br />
<br />
===Lazarus für den neuen FPC einrichten===<br />
<br />
FPC ist jetzt installiert, entweder mittels "make install" oder dadurch, dass Sie ein distributionsspezifisches Package verwenden.<br />
Der nächste Schritt ist das Kompilieren von Lazarus SVN mit dem neuen Compiler und die IDE anzuweisen, das Verzeichnis ''/home/username/freepascal/fpc'' als ''FPC Quelltext-Verzeichnis'' zu benutzen.<br />
<br />
Falls Sie Lazarus SVN bislang noch nicht heruntergeladen haben, tun Sie das jetzt: [[Getting_Lazarus#Development_versions_from_SVN|Development versions from SVN]]. Zum Beispiel:<br />
<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus<br />
<br />
Dies wird einige Zeit dauern, anschließend geht es weiter mit:<br />
cd ~/freepascal/lazarus<br />
make clean all<br />
<br />
Wenn Sie dabei Linker-Fehlermeldungen erhalten, müssen Sie einige zusätzliche Packages installieren (build-essential, libgtk2.0-dev,libgdk-pixbuf-dev).<br />
Starten Sie die IDE:<br />
cd ~/freepascal/lazarus<br />
./lazarus<br />
<br />
Das ist eine minimalistische IDE ohne irgendwelche Extra-Packages. Nun muss die IDE eingerichtet werden, dann kann sie mit den Packages erstellt werden: <br />
<br />
* Gehen Sie zu Werkzeuge / Einstellungen / Umgebung <br />
* Setzen Sie das ''Lazarus-Verzeichnis'' auf ''/home/username/freepascal/lazarus'' <br />
* Setzen Sie das ''FPC-Quelltextverzeichnis'' auf ''/home/username/freepascal/fpc''<br />
* Klicken Sie auf ''Ok''. Das schließt den Dialog.<br />
* Werkzeuge / Lazarus kompilieren einrichten / Quick Build Options / IDE mit Packages neu kompilieren<br />
* Klicken Sie auf ''Neu kompilieren''.<br />
* Starten Sie die IDE neu<br />
* Jetzt haben Sie die neueste und beste IDE, erstellt mit dem neuesten und besten FPC.<br />
<br />
== Entwicklungsversionen über Git holen ==<br />
Es gibt einen [[git mirrors|Git Spiegelserver]] des offiziellen SubVersion-Repository der über [http://github.com/ GitHub] erreichbar ist. Dieser Spiegelserver wird alle 15 Minuten mit dem SubVersion-Repository abgeglichen. Für weitere Informationen darüber, wie Sie [http://git-scm.com/ Git] erhalten können und damit das Lazarus-Repository klonen können, folgen Sie diesem Link: [[git mirrors|Git Mirrors]].<br />
Sie können 'git' auch direkt über den SubVersion-Server erreichen; nehmen Sie den Link 'git-svn'. Siehe [[Lazarus git-svn|Lazarus git-svn]] für weitere Details.<br />
<br />
== Entwicklungsversionen über Mercurial holen==<br />
<s>There is a Hg mirror of the official SubVersion repository being maintained on [http://florianklaempfl.de:8000/lazarustrunk/ florianklaempfl.de].</s><br />
<br />
Dieser Mirror existiert nicht mehr. Siehe die [http://lists.freepascal.org/lists/fpc-devel/2010-June/020442.html Mitteilung] von Florian Klämpfl.<br />
<br />
==Schnappschuss-Methode==<br />
<br />
Wenn Sie SVN nicht direkt verwenden wollen, können sie einen täglich aktualisierten Schnappschuss ausprobieren. Eine Liste der Mirrors finden Sie auf der Seite [[Lazarus Snapshots Downloads]].<br />
<br />
==Verwenden von fpclazup==<br />
In einem [http://forum.lazarus.freepascal.org/index.php/topic,27211.225.html Forenbeitrag von DonAlfredo am04.01.2017] schreibt dieser, die fpc(laz)up Binaries würden nicht länger wie bisher als Teil eines commits der fpc(laz)up-Quellen verteilt, sondern seien künftig ein eigenes Release: [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases].<br />
<br />
Um auf einem diesbezüglich noch völlig "blanken" Rechner ein aktuelles fpc und lazarus zu installieren, geht man also wie folgt vor:<br />
<br />
* Download des passenden Binaries (z.B. fpclazup-x86_64-linux) von [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases]<br />
* Installieren der erforderlichen Bibliotheken und Werkzeuge (nachzulesen im [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/blob/master/Readme.TXT Readme.TXT]<br />
* unter Linux: das heruntergeladene Binary ausführbar machen (z.B. "chmod a+x fpclazup-x86_64-linux")<br />
* Starten des Binaries<br />
<br />
Bei einem erfolgreichen Programmlauf sollten in der Ausgabe nur Zeilen der Art <br />
fpclazup: info: ...<br />
auftauchen; einzige Ausnahme<br />
helplazarus: WARNING: ~/development/lazarus/docs/chm/lcl/lcl.chm was created but is empty")<br />
<br />
Hat man alles mit den Standardeinstellungen laufen lassen, sollte anschließend mit knapp 1 GB wohlbefüllte Verzeichnis<br />
"~/development/lazarus/" existieren und sich darin "startlazarus" starten lassen.<br />
<br />
Mit dem ersten Aufruf von ''fpclazup'' sind des weiteren im selben Verzeichnis die Konfigurationsdateien "fpcup.ini" und "settings.ini" enstanden, die man nun nach den eigenen Wünschen konfigurieren und den Erstellvorgang dann wiederholen kann.<br />
<br />
Paßt alles, sollte man mit den drei Dateien (fpclazup-x86_64-linux, fpcup.ini und settings.ini) auch weitere Rechner reproduzierbar mit Lazarus in der gewünschten Konfiguration ausstatten können.<br />
<br />
<br />
Eine interessante Alternative zumindest unter Linux könnte das Verpacken einer so erstellten Installation in zur Distribution (z.B. Ubuntu/Linux) sein. Die aktuelle Installation wäre damit zum einen archiviert, zum anderen ließe sie sich bandbreitenschonend auf mehrere Rechner verteilen, ohne jeweils neu die knapp 2 GB aus den Repositories herunterladen zu müssen.<br />
<br />
==Durchsuchen des Quelltext-Repositorys mit einem Web-Browser==<br />
<br />
Die Inhalte des SVN-Archivs können auch mit einem Web-Browser durchsucht werden über die [http://www.freepascal.org/cgi-bin/viewcvs.cgi/?root=lazarus ViewCVS] Schnittstelle.<br />
<br />
==Lazarus Distributionen==<br />
<br />
Es gibt einige inoffizielle Seiten, wo Sie Lazarus und Free Pascal ebenfalls finden können:<br />
*You can get a Ubuntu LiveCD from Austrian University of Applied Sciences hosting <br />
http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso<br />
und die md5sum Datei http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso.md5.<br />
<br />
==Mitwirkende und Änderungen==<br />
<br />
Diese Seite wurde konvertiert von der epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=GettingLazarus Version].<br />
<br />
[[Category:Lazarus/de]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Getting_Lazarus/de&diff=107015Getting Lazarus/de2017-02-02T10:46:55Z<p>Arabidopsis: /* Verwenden von fpclazup */</p>
<hr />
<div>{{Getting Lazarus}}<br />
<br />
==Download und Installation einer offiziellen Version von Lazarus==<br />
<br />
=== Von SourceForge ===<br />
<br />
Binäre Releases für verschiedene Plattformen sind hier [http://sourceforge.net/project/showfiles.php?group_id=89339 Lazarus Sourceforge Download Bereich] verfügbar.<br />
<br />
=== Für bestimmte Plattformen ===<br />
<br />
Lazarus für Windows erhalten - benutzen Sie den obigen Link zu Sourceforge.<br />
<br />
[[Lazarus release version for Ubuntu|Get Lazarus for Ubuntu]]<br />
<br />
[[Lazarus release version for Fedora|Get Lazarus for Fedora]]<br />
<br />
[[Lazarus release version for Suse|Get Lazarus for Suse]]<br />
<br />
[[Lazarus release version for Mandriva|Get Lazarus for Mandriva]]<br />
<br />
[[Lazarus release version for Mac|Get Lazarus for Mac]]<br />
<br />
[[Lazarus on Solaris]]<br />
<br />
== Holen Sie sich SVN==<br />
<br />
=== TortoiseSVN Client ===<br />
<br />
TortoiseSVN ist ein SVN-Client nur für Windows. Sie können ihn von http://tortoisesvn.tigris.org/ herunterladen. Das Programm unterstützt zunächst nur die englische Sprache. Weitere Sprachen (z.B. Deutsch) müssen durch separate Pakete (auf der selben Seite erhältlich) nachgerüstet werden.<br />
<br />
[[TortoiseSvn|Diese Seite]] zeigt Ihnen, wie Sie Lazarus SVN Quelltexte herunterladen und aktualisieren können. Aber auch für FPC-Quelltexte ist dieses Verfahren in gleicher Weise anwendbar.<br />
<br />
=== Andere SVN-Clients ===<br />
<br />
Ein SVN-Kommandozeilen-Client ist von der offiziellen SVN [http://subversion.tigris.org/ Internetseite] für viele Plattformen erhältlich.<br />
Unter Linux wird empfohlen, ''Subversion'' mit dem Paketmanagementsystems ihrer Distribution zu installieren. Zum Beispiel:<br />
<br />
sudo apt-get install subversion<br />
<br />
Mac OS X enthält svn ab der Version 10.5. Bei älteren Versionen müssen Sie es selbst installieren.<br />
<br />
==Holen Sie sich eine Lazarus SVN Entwicklungsversion==<br />
<br />
=== Von der Kommandozeile aus ===<br />
<br />
Um Lazarus zum ersten Mal zu erhalten:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Verzeichnis, in dem Sie den Lazarus-Ordner erstellen wollen und tippen Sie:<br />
<nowiki>svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Um die Lazarus-Quellen zu aktualisieren:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Lazarus-Verzeichnis und tippen Sie:<br />
svn update<br />
<br />
Zum Kompilieren siehe [[#Compiling_and_installing_Lazarus|hier]].<br />
<br />
===Alternative URLs===<br />
Manchmal funktioniert die oben genannte URL des Repository nicht, weil sich zwischen Ihnen und dem SVN-Server ein http-Proxy-Server befindet. Dieser Server soll zwar oft ein 'transparenter' Proxy sein, aber er leitet Ihre SVN-Kommandos nicht korrekt an den Server svn.freepascal.org weiter.<br />
<br />
Der svn.freepascal.org Server hat aber auch den Port 8080 offen. Vielleicht mischt sich der Proxy-Server nicht in den http-Datenverkehr über diesen Port ein. Deshalb können Sie auch folgendes probieren:<br />
<nowiki>svn co http://svn.freepascal.org:8080/svn/lazarus/trunk lazarus</nowiki> <br />
<br />
Das Lazarus-SVN-Repository wird auf Sourceforge mit einer Verzögerung von 3 Minuten unter Verwendung von svnsync gespiegelt. Das Sourceforge-Repository verwendet das https-Protokoll. Proxy-Server mischen sich bei diesem Protokoll nicht ein. Sie können demnach auch von Sourceforge mit dem folgenden Kommando 'auschecken' (checkout):<br />
<nowiki>svn co https://svn.sourceforge.net/svnroot/lazarus/trunk lazarus</nowiki><br />
<br />
Die FPC- und Lazarus-SVN-Repositories werden auch auf svn2.freepascal.org gespiegelt. Sie können von svn2.freepascal.org aus-checken mit <br />
<nowiki>svn co http://svn2.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Wenn Sie selbst den Proxy-Server verwalten, oder mit dem Verwalter befreundet sind, gibt es hier Details zur Einrichtung des Proxys zum Weiterleiten der SVN-Befehle: http://subversion.tigris.org/faq.html#proxy Dies enthält ein Beispiel für 'squid'. Vergessen Sie nicht, den SVN-Client für die Benutzung des Proxys einzurichten! (Für TortoiseSVN, siehe 'settings/network').<br />
<br />
===Skripte===<br />
<br />
Es gibt Skripte für Windows und Linux, um das Herunterladen und Erstellen von Lazarus zu automatisieren: [[LazarusScripts|Scripts for Lazarus]]<br />
<br />
==Kompilieren und Installieren von Lazarus==<br />
<br />
Siehe [[Installing Lazarus]] - ein detaillierter Installationsführer, oder http://www.stack.nl/~marcov/buildfaq.pdf - eine noch detailliertere Anleitung.<br />
<br />
===Von der Kommandozeile aus===<br />
<br />
Lazarus wird mit einem Makefile für das GNU "make" Programm geliefert. <br />
<br />
{{Warning|Wenn Sie auch Tools von Codegear (oder Borland) installiert haben, könnte dadurch ein Konflikt mit GNU "make" entstehen}}<br />
<br />
Dieses Tool erlaubt es, Lazarus einfach von der Befehlszeile zu kompilieren. <br />
Sie müssen allerdings zuerst FPC und die FPC-Packages installiert und konfiguriert haben.<br />
<br />
Um zu kompilieren wechseln Sie in der Befehlszeile/einem Terminal in das Lazarus-Verzeichnis und geben ein:<br />
make<br />
<br />
Dadurch werden LCL und Lazarus IDE (mit den installierten Standardpackages) neu erstellt.<br />
<br />
===Make targets===<br />
Die folgenden Kompilier-Profile ("targets") können für das Programm "make" angegeben werden:<br />
<br />
* '''clean''' - the command will clean all compiled LCL and IDE units. Warning, this might make your project uncompilable (even though IDE still run, since binary is not deleted). Zum Beispiel: "''make clean''"<br />
<br />
* '''bigide''' - Dieses Kommando erstellt LCL und IDE mit zusätzlichen Packages neu. Zum Beispiel: "''make bigide''"<br />
<br />
* '''lcl''' - dieser Befehl erstellt nur die LCL neu. Die IDE wird nicht angefasst. Das Kommando ist sehr hilfreich, wenn Sie Änderungen an der LCL vornehmen und testen müssen, wie sich die Änderungen auf ihr Projekt auswirken, ohne die Gefahr, dass Lazarus nicht mehr funktioniert. Das Neuerstellen nur der LCL geht schneller als das Neuerstellen von LCL und IDE zusammen. Zum Beispiel: "''make lcl''"<br />
<br />
* '''components'''<br />
* '''packager/registration'''<br />
* '''ideintf''' <br />
* '''packager'''<br />
* '''bigidecomponents'''<br />
* '''ide''' <br />
* '''idepkg''' <br />
* '''idebig''' <br />
* '''bigide''' <br />
* '''starter''' - the command rebuilds startlazarus binary.<br />
* '''lazbuilder'''<br />
* '''tools''' <br />
* '''all''' <br />
* '''cleanide'''<br />
* '''purge'''<br />
* '''examples''' - the command rebuilds examples lazarus <br />
* '''install''' <br />
* '''lazbuild'''<br />
<br />
<br />
Wenn kein Profil angegeben ist, werden LCL und Lazarus IDE (mit einem Basisset von Komponenten) neu erstellt.<br />
<br />
===Make parameters===<br />
Es gibt zusätzliche Parameter, die für die Erstellung von Lazarus verwendet werden können.<br />
<br />
* '''OPT'''=%compiler_switches<br />
the %compiler_switches is passed to each fpc call. The option is useful for specifying defines<br />
<br />
Zum Beispiel:<br />
make bigide OPT="-dNoGdkPixBufLib -gw2" <br />
erstellt LCL und IDE mit der Option NoGdkPixBufLib sowie dwarf2 Debugging-Informationen. <br />
<br />
* '''LCL_PLATFORM'''=%platform<br />
%platform is the target Widgetset. Es kann win32, gtk, gtk2, qt, carbon oder cocoa sein.<br />
<br />
Zum Beispiel:<br />
make LCL_PLATFORM=gtk2<br />
Erstellt LCL und IDE für das gtk2 Widgetset neu<br />
<br />
* '''FPC'''=%compiler_path<br />
or<br />
* '''PP'''=%compiler_path<br />
%compiler_path is the path to a custom compiler binary you want to build the target with.<br />
<br />
==Holen Sie sich eine FPC SVN Entwicklungsversion==<br />
<br />
Hier sind einige Tipps, wie Sie sich die Entwicklungsversion von FPC (aktuell: 2.5.1) besorgen und installieren können. Diese enthält neue Features und Fehlerkorrekturen, ist aber weniger stabil und enthält auch vermutlich neue Fehler.<br />
Der Compiler ist nicht im Lazarus SVN enthalten, hat aber sein eigenes FPC SVN. Sie ''müssen'' zuerst die letzte offizielle Version von FPC installieren. Laden Sie sie von hier http://sourceforge.net/projects/freepascal/ herunter und installieren Sie sie. Oder lesen Sie weitere Details hier: [[Installing_Lazarus#Installing_The_Free_Pascal_Compiler|Installing the Free Pascal Compiler]].<br />
<br />
Erzeugen Sie dann ein Verzeichnis und laden Sie FPC von SVN herunter:<br />
<br />
mkdir -p ~/freepascal<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/fpc/trunk fpc<br />
<br />
Dies wird einige Zeit dauern.<br />
<br />
Sie können allerdings auch den TortoiseSVN-Client für Windows einsetzen wie bereits zuvor beschrieben.<br />
<br />
==Kompilieren und Installieren von FPC==<br />
<br />
Es gibt viele Arten, FPC zu kompilieren und zu installieren.<br />
<br />
* Benutzen Sie einfach ''make''.<br />
* Erstellen Sie ein FPC-Package für Ihre Linux-Distribution (.deb oder .rpm Datei). Das Package erlaubt es, FPC einfach zu deinstallieren, zu upgraden oder downgraden und stellt sicher, dass alle Dateien in die richtigen Verzeichnisse installiert werden. Wenn also irgend etwas schief läuft, können Ihnen andere Benutzer zu Hilfe kommen.<br />
<br />
In jedem Fall muss Lazarus abschließend noch für den neuen FPC konfiguriert werden.<br />
<br />
===Erstellen und Installieren von Free Pascal unter UNIX-ähnlichen Systemen===<br />
<br />
Die folgenden Instruktionen gelten für UNIX-ähnliche Plattformen, wie z.B. Linux, aber auch für Mac OS X.<br />
<br />
Free Pascal aus dem Quellcode zu erstellen, kann in einigen Situationen nützlich sein. Ein Beispiel stellt das Debuggen eines Problems im Compiler dar, in der RTL oder in der FCL. Die ausgelieferten FPC-Installationen kommen ohne Debug-Informationen daher, aber Installationen, die mittels der Makefiles erstellt wurden, enthalten diese Debug-Informationen als Vorgabe. Ein weiteres Anwendungsbeispiel ist das Austesten einer Entwicklungsversion des Compilers, obwohl dafür oftmals auch Schnappschüsse verfügbar sind.<br />
<br />
<b>Schritt 1 - Stellen Sie sicher, dass Sie einen kompatiblen, startenden Compiler installiert haben.</b><br />
<br />
Üblicherweise bedeutet das, dass Sie die letzte stabile Version installiert haben.<br />
<br />
<b>Schritt 2 - Laden Sie die Quelltexte des neuen Compilers herunter</b><br />
<br />
Als erstes sollten Sie den Free Pascal Quellcode der Version herunterladen, die Sie zu erstellen wünschen. Um, zum Beispiel, die letzten Fixes des 2.4 Zweiges herunter zu laden, geben Sie ein:<br />
<br />
svn checkout http://svn.freepascal.org/svn/fpc/branches/fixes_2_4 fpcfixes2_4<br />
<br />
<b>Schritt 3 - Erstellen des Compilers</b><br />
<br />
Wechseln Sie nun in das neu erzeugte Verzeichnis und erstellen und installieren Sie Free Pascal:<br />
<br />
cd fpcfixes2_4<br />
make clean all install INSTALL_PREFIX=~<br />
<br />
Dadurch wird der Compiler in 3 Durchläufen übersetzt, indem zuerst der bereits installierte Compiler und dann der neu übersetzte Compiler benutzt wird.<br />
<br />
Es installiert alle benötigten Dateien im angegebenen Verzeichnis. Falls nötig, installieren Sie in ein anderes Verzeichnis. Sie müssen allerdings mit dem Root-Konto angemeldet sein, bzw. Administrator-Rechte haben, wenn mit einem normalen Benutzerkonto kein Schreibzugriff auf dieses Verzeichnis möglich ist.<br />
<br />
<b>Schritt 4 - Aktualisieren Sie Ihre fpc.cfg Datei</b><br />
<br />
Dann erzeugen Sie die Datei<br />
~/.fpc.cfg<br />
<br />
Dies ist eine verborgene Datei (beachten Sie den ersten Punkt). Geben Sie folgende Zeilen in diese Datei ein. Falls Sie in ein anderes Verzeichnis installiert haben, nehmen Sie statt dessen Ihr eigenes home-Verzeichnis.<br />
<br />
#include /etc/fpc.cfg<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/*<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/rtl<br />
<br />
Dadurch werden zukünftige Versionen in PREFIX=~ installiert, ohne diese Konfigurationsdatei anzurühren.<br />
<br />
Um fpc zu starten, muss ~/bin in der Umgebungsvariablen PATH stehen. Normalerweise ist es bereits standardgemäß dort.<br />
Sie müssen auch ~/lib/fpc/2.5.1 an PATH anfügen, weil sich das aktuelle Compiler-Binary dort befindet.<br />
Die meisten Linuxsysteme verwenden die Bash-Shell und diese Einstellung kann zur Datei ~/.bashrc (wieder eine versteckte Datei) hinzugefügt werden:<br />
export PATH=~/lib/fpc/2.5.1:$PATH<br />
<br />
Beachten Sie: Der Pfadseparator ist ":" unter Linux (";" unter Windows). Lesen Sie nun "Configure Lazarus for the new fpc" unten für den nächsten Schritt.<br />
<br />
===Erstellen eines Debian/Ubuntu Packages===<br />
<br />
'''Wichtig''': Dieses Skript erzeugt '''nicht''' die offiziellen Debian/Ubuntu Packages. Es erzeugt ein FPC-Package das den Compiler und alle benötigten Packages enthält. <br />
<br />
Um dieses Package zu erstellen, müssen Sie zuerst einige Packages installieren:<br />
<br />
sudo apt-get install libgpmg1-dev fakeroot libncurses5-dev build-essential<br />
<br />
Gehen Sie in das Lazarus Quelltextverzeichnis. Dieses Verzeichnis muss die Schreibrechte besitzen.<br />
<br />
cd ~/freepascal/lazarus/tools/install<br />
./create_fpc_deb.sh fpc ~/freepascal/fpc<br />
<br />
Falls Sie eine Fehlermeldung über eine fehlende Datei oder ein fehlendes Werkzeug erhalten müssen Sie das fehlende Package nachinstallieren. Falls Sie eine Kompiler-Fehlermeldung erhalten, dann ist Ihr installierter FPC nicht die offizielle Version oder Sie hatten Pech und haben sich eine fehlerhafte SVN-Version heruntergeladen. Suchen Sie Hilfe über die Mailing-Liste, das Forum oder den Chat.<br />
Falls alles geklappt hat, haben Sie jetzt eine .deb-Datei, die Sie installieren können:<br />
<br />
sudo dpkg -i fpc_2.5.1-091121_i386.deb<br />
<br />
Der Dateiname wird bei Ihnen etwas anders lauten.<br />
<br />
===Erstellen eines RPM-Packages===<br />
<br />
ToDo...<br />
<br />
===Lazarus für den neuen FPC einrichten===<br />
<br />
FPC ist jetzt installiert, entweder mittels "make install" oder dadurch, dass Sie ein distributionsspezifisches Package verwenden.<br />
Der nächste Schritt ist das Kompilieren von Lazarus SVN mit dem neuen Compiler und die IDE anzuweisen, das Verzeichnis ''/home/username/freepascal/fpc'' als ''FPC Quelltext-Verzeichnis'' zu benutzen.<br />
<br />
Falls Sie Lazarus SVN bislang noch nicht heruntergeladen haben, tun Sie das jetzt: [[Getting_Lazarus#Development_versions_from_SVN|Development versions from SVN]]. Zum Beispiel:<br />
<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus<br />
<br />
Dies wird einige Zeit dauern, anschließend geht es weiter mit:<br />
cd ~/freepascal/lazarus<br />
make clean all<br />
<br />
Wenn Sie dabei Linker-Fehlermeldungen erhalten, müssen Sie einige zusätzliche Packages installieren (build-essential, libgtk2.0-dev,libgdk-pixbuf-dev).<br />
Starten Sie die IDE:<br />
cd ~/freepascal/lazarus<br />
./lazarus<br />
<br />
Das ist eine minimalistische IDE ohne irgendwelche Extra-Packages. Nun muss die IDE eingerichtet werden, dann kann sie mit den Packages erstellt werden: <br />
<br />
* Gehen Sie zu Werkzeuge / Einstellungen / Umgebung <br />
* Setzen Sie das ''Lazarus-Verzeichnis'' auf ''/home/username/freepascal/lazarus'' <br />
* Setzen Sie das ''FPC-Quelltextverzeichnis'' auf ''/home/username/freepascal/fpc''<br />
* Klicken Sie auf ''Ok''. Das schließt den Dialog.<br />
* Werkzeuge / Lazarus kompilieren einrichten / Quick Build Options / IDE mit Packages neu kompilieren<br />
* Klicken Sie auf ''Neu kompilieren''.<br />
* Starten Sie die IDE neu<br />
* Jetzt haben Sie die neueste und beste IDE, erstellt mit dem neuesten und besten FPC.<br />
<br />
== Entwicklungsversionen über Git holen ==<br />
Es gibt einen [[git mirrors|Git Spiegelserver]] des offiziellen SubVersion-Repository der über [http://github.com/ GitHub] erreichbar ist. Dieser Spiegelserver wird alle 15 Minuten mit dem SubVersion-Repository abgeglichen. Für weitere Informationen darüber, wie Sie [http://git-scm.com/ Git] erhalten können und damit das Lazarus-Repository klonen können, folgen Sie diesem Link: [[git mirrors|Git Mirrors]].<br />
Sie können 'git' auch direkt über den SubVersion-Server erreichen; nehmen Sie den Link 'git-svn'. Siehe [[Lazarus git-svn|Lazarus git-svn]] für weitere Details.<br />
<br />
== Entwicklungsversionen über Mercurial holen==<br />
<s>There is a Hg mirror of the official SubVersion repository being maintained on [http://florianklaempfl.de:8000/lazarustrunk/ florianklaempfl.de].</s><br />
<br />
Dieser Mirror existiert nicht mehr. Siehe die [http://lists.freepascal.org/lists/fpc-devel/2010-June/020442.html Mitteilung] von Florian Klämpfl.<br />
<br />
==Schnappschuss-Methode==<br />
<br />
Wenn Sie SVN nicht direkt verwenden wollen, können sie einen täglich aktualisierten Schnappschuss ausprobieren. Eine Liste der Mirrors finden Sie auf der Seite [[Lazarus Snapshots Downloads]].<br />
<br />
==Verwenden von fpclazup==<br />
In einem [http://forum.lazarus.freepascal.org/index.php/topic,27211.225.html Forenbeitrag von DonAlfredo am04.01.2017] schreibt dieser, die fpc(laz)up Binaries würden nicht länger wie bisher als Teil eines commits der fpc(laz)up-Quellen verteilt, sondern seien künftig ein eigenes Release: [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases].<br />
<br />
Um auf einem diesbezüglich noch völlig "blanken" Rechner ein aktuelles fpc und lazarus zu installieren, geht man also wie folgt vor:<br />
<br />
* Download des passenden Binaries (z.B. fpclazup-x86_64-linux) von [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases ]<br />
* unter Linux: das heruntergeladene Binary ausführbar machen (z.B. "chmod a+x fpclazup-x86_64-linux")<br />
* Starten des Binaries<br />
<br />
Bei einem erfolgreichen Programmlauf sollten in der Ausgabe nur Zeilen der Art <br />
fpclazup: info: ...<br />
auftauchen; einzige Ausnahme<br />
helplazarus: WARNING: ~/development/lazarus/docs/chm/lcl/lcl.chm was created but is empty")<br />
<br />
Hat man alles mit den Standardeinstellungen laufen lassen, sollte anschließend mit knapp 1 GB wohlbefüllte Verzeichnis<br />
"~/development/lazarus/" existieren und sich darin "startlazarus" starten lassen.<br />
<br />
Mit dem ersten Aufruf von ''fpclazup'' sind des weiteren im selben Verzeichnis die Konfigurationsdateien "fpcup.ini" und "settings.ini" enstanden, die man nun nach den eigenen Wünschen konfigurieren und den Erstellvorgang dann wiederholen kann.<br />
<br />
Paßt alles, sollte man mit den drei Dateien (fpclazup-x86_64-linux, fpcup.ini und settings.ini) auch weitere Rechner reproduzierbar mit Lazarus in der gewünschten Konfiguration ausstatten können.<br />
<br />
<br />
Eine interessante Alternative zumindest unter Linux könnte das Verpacken einer so erstellten Installation in zur Distribution (z.B. Ubuntu/Linux) sein. Die aktuelle Installation wäre damit zum einen archiviert, zum anderen ließe sie sich bandbreitenschonend auf mehrere Rechner verteilen, ohne jeweils neu die knapp 2 GB aus den Repositories herunterladen zu müssen.<br />
<br />
==Durchsuchen des Quelltext-Repositorys mit einem Web-Browser==<br />
<br />
Die Inhalte des SVN-Archivs können auch mit einem Web-Browser durchsucht werden über die [http://www.freepascal.org/cgi-bin/viewcvs.cgi/?root=lazarus ViewCVS] Schnittstelle.<br />
<br />
==Lazarus Distributionen==<br />
<br />
Es gibt einige inoffizielle Seiten, wo Sie Lazarus und Free Pascal ebenfalls finden können:<br />
*You can get a Ubuntu LiveCD from Austrian University of Applied Sciences hosting <br />
http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso<br />
und die md5sum Datei http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso.md5.<br />
<br />
==Mitwirkende und Änderungen==<br />
<br />
Diese Seite wurde konvertiert von der epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=GettingLazarus Version].<br />
<br />
[[Category:Lazarus/de]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Getting_Lazarus/de&diff=107014Getting Lazarus/de2017-02-02T10:32:28Z<p>Arabidopsis: /* Verwenden von fpclazup */</p>
<hr />
<div>{{Getting Lazarus}}<br />
<br />
==Download und Installation einer offiziellen Version von Lazarus==<br />
<br />
=== Von SourceForge ===<br />
<br />
Binäre Releases für verschiedene Plattformen sind hier [http://sourceforge.net/project/showfiles.php?group_id=89339 Lazarus Sourceforge Download Bereich] verfügbar.<br />
<br />
=== Für bestimmte Plattformen ===<br />
<br />
Lazarus für Windows erhalten - benutzen Sie den obigen Link zu Sourceforge.<br />
<br />
[[Lazarus release version for Ubuntu|Get Lazarus for Ubuntu]]<br />
<br />
[[Lazarus release version for Fedora|Get Lazarus for Fedora]]<br />
<br />
[[Lazarus release version for Suse|Get Lazarus for Suse]]<br />
<br />
[[Lazarus release version for Mandriva|Get Lazarus for Mandriva]]<br />
<br />
[[Lazarus release version for Mac|Get Lazarus for Mac]]<br />
<br />
[[Lazarus on Solaris]]<br />
<br />
== Holen Sie sich SVN==<br />
<br />
=== TortoiseSVN Client ===<br />
<br />
TortoiseSVN ist ein SVN-Client nur für Windows. Sie können ihn von http://tortoisesvn.tigris.org/ herunterladen. Das Programm unterstützt zunächst nur die englische Sprache. Weitere Sprachen (z.B. Deutsch) müssen durch separate Pakete (auf der selben Seite erhältlich) nachgerüstet werden.<br />
<br />
[[TortoiseSvn|Diese Seite]] zeigt Ihnen, wie Sie Lazarus SVN Quelltexte herunterladen und aktualisieren können. Aber auch für FPC-Quelltexte ist dieses Verfahren in gleicher Weise anwendbar.<br />
<br />
=== Andere SVN-Clients ===<br />
<br />
Ein SVN-Kommandozeilen-Client ist von der offiziellen SVN [http://subversion.tigris.org/ Internetseite] für viele Plattformen erhältlich.<br />
Unter Linux wird empfohlen, ''Subversion'' mit dem Paketmanagementsystems ihrer Distribution zu installieren. Zum Beispiel:<br />
<br />
sudo apt-get install subversion<br />
<br />
Mac OS X enthält svn ab der Version 10.5. Bei älteren Versionen müssen Sie es selbst installieren.<br />
<br />
==Holen Sie sich eine Lazarus SVN Entwicklungsversion==<br />
<br />
=== Von der Kommandozeile aus ===<br />
<br />
Um Lazarus zum ersten Mal zu erhalten:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Verzeichnis, in dem Sie den Lazarus-Ordner erstellen wollen und tippen Sie:<br />
<nowiki>svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Um die Lazarus-Quellen zu aktualisieren:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Lazarus-Verzeichnis und tippen Sie:<br />
svn update<br />
<br />
Zum Kompilieren siehe [[#Compiling_and_installing_Lazarus|hier]].<br />
<br />
===Alternative URLs===<br />
Manchmal funktioniert die oben genannte URL des Repository nicht, weil sich zwischen Ihnen und dem SVN-Server ein http-Proxy-Server befindet. Dieser Server soll zwar oft ein 'transparenter' Proxy sein, aber er leitet Ihre SVN-Kommandos nicht korrekt an den Server svn.freepascal.org weiter.<br />
<br />
Der svn.freepascal.org Server hat aber auch den Port 8080 offen. Vielleicht mischt sich der Proxy-Server nicht in den http-Datenverkehr über diesen Port ein. Deshalb können Sie auch folgendes probieren:<br />
<nowiki>svn co http://svn.freepascal.org:8080/svn/lazarus/trunk lazarus</nowiki> <br />
<br />
Das Lazarus-SVN-Repository wird auf Sourceforge mit einer Verzögerung von 3 Minuten unter Verwendung von svnsync gespiegelt. Das Sourceforge-Repository verwendet das https-Protokoll. Proxy-Server mischen sich bei diesem Protokoll nicht ein. Sie können demnach auch von Sourceforge mit dem folgenden Kommando 'auschecken' (checkout):<br />
<nowiki>svn co https://svn.sourceforge.net/svnroot/lazarus/trunk lazarus</nowiki><br />
<br />
Die FPC- und Lazarus-SVN-Repositories werden auch auf svn2.freepascal.org gespiegelt. Sie können von svn2.freepascal.org aus-checken mit <br />
<nowiki>svn co http://svn2.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Wenn Sie selbst den Proxy-Server verwalten, oder mit dem Verwalter befreundet sind, gibt es hier Details zur Einrichtung des Proxys zum Weiterleiten der SVN-Befehle: http://subversion.tigris.org/faq.html#proxy Dies enthält ein Beispiel für 'squid'. Vergessen Sie nicht, den SVN-Client für die Benutzung des Proxys einzurichten! (Für TortoiseSVN, siehe 'settings/network').<br />
<br />
===Skripte===<br />
<br />
Es gibt Skripte für Windows und Linux, um das Herunterladen und Erstellen von Lazarus zu automatisieren: [[LazarusScripts|Scripts for Lazarus]]<br />
<br />
==Kompilieren und Installieren von Lazarus==<br />
<br />
Siehe [[Installing Lazarus]] - ein detaillierter Installationsführer, oder http://www.stack.nl/~marcov/buildfaq.pdf - eine noch detailliertere Anleitung.<br />
<br />
===Von der Kommandozeile aus===<br />
<br />
Lazarus wird mit einem Makefile für das GNU "make" Programm geliefert. <br />
<br />
{{Warning|Wenn Sie auch Tools von Codegear (oder Borland) installiert haben, könnte dadurch ein Konflikt mit GNU "make" entstehen}}<br />
<br />
Dieses Tool erlaubt es, Lazarus einfach von der Befehlszeile zu kompilieren. <br />
Sie müssen allerdings zuerst FPC und die FPC-Packages installiert und konfiguriert haben.<br />
<br />
Um zu kompilieren wechseln Sie in der Befehlszeile/einem Terminal in das Lazarus-Verzeichnis und geben ein:<br />
make<br />
<br />
Dadurch werden LCL und Lazarus IDE (mit den installierten Standardpackages) neu erstellt.<br />
<br />
===Make targets===<br />
Die folgenden Kompilier-Profile ("targets") können für das Programm "make" angegeben werden:<br />
<br />
* '''clean''' - the command will clean all compiled LCL and IDE units. Warning, this might make your project uncompilable (even though IDE still run, since binary is not deleted). Zum Beispiel: "''make clean''"<br />
<br />
* '''bigide''' - Dieses Kommando erstellt LCL und IDE mit zusätzlichen Packages neu. Zum Beispiel: "''make bigide''"<br />
<br />
* '''lcl''' - dieser Befehl erstellt nur die LCL neu. Die IDE wird nicht angefasst. Das Kommando ist sehr hilfreich, wenn Sie Änderungen an der LCL vornehmen und testen müssen, wie sich die Änderungen auf ihr Projekt auswirken, ohne die Gefahr, dass Lazarus nicht mehr funktioniert. Das Neuerstellen nur der LCL geht schneller als das Neuerstellen von LCL und IDE zusammen. Zum Beispiel: "''make lcl''"<br />
<br />
* '''components'''<br />
* '''packager/registration'''<br />
* '''ideintf''' <br />
* '''packager'''<br />
* '''bigidecomponents'''<br />
* '''ide''' <br />
* '''idepkg''' <br />
* '''idebig''' <br />
* '''bigide''' <br />
* '''starter''' - the command rebuilds startlazarus binary.<br />
* '''lazbuilder'''<br />
* '''tools''' <br />
* '''all''' <br />
* '''cleanide'''<br />
* '''purge'''<br />
* '''examples''' - the command rebuilds examples lazarus <br />
* '''install''' <br />
* '''lazbuild'''<br />
<br />
<br />
Wenn kein Profil angegeben ist, werden LCL und Lazarus IDE (mit einem Basisset von Komponenten) neu erstellt.<br />
<br />
===Make parameters===<br />
Es gibt zusätzliche Parameter, die für die Erstellung von Lazarus verwendet werden können.<br />
<br />
* '''OPT'''=%compiler_switches<br />
the %compiler_switches is passed to each fpc call. The option is useful for specifying defines<br />
<br />
Zum Beispiel:<br />
make bigide OPT="-dNoGdkPixBufLib -gw2" <br />
erstellt LCL und IDE mit der Option NoGdkPixBufLib sowie dwarf2 Debugging-Informationen. <br />
<br />
* '''LCL_PLATFORM'''=%platform<br />
%platform is the target Widgetset. Es kann win32, gtk, gtk2, qt, carbon oder cocoa sein.<br />
<br />
Zum Beispiel:<br />
make LCL_PLATFORM=gtk2<br />
Erstellt LCL und IDE für das gtk2 Widgetset neu<br />
<br />
* '''FPC'''=%compiler_path<br />
or<br />
* '''PP'''=%compiler_path<br />
%compiler_path is the path to a custom compiler binary you want to build the target with.<br />
<br />
==Holen Sie sich eine FPC SVN Entwicklungsversion==<br />
<br />
Hier sind einige Tipps, wie Sie sich die Entwicklungsversion von FPC (aktuell: 2.5.1) besorgen und installieren können. Diese enthält neue Features und Fehlerkorrekturen, ist aber weniger stabil und enthält auch vermutlich neue Fehler.<br />
Der Compiler ist nicht im Lazarus SVN enthalten, hat aber sein eigenes FPC SVN. Sie ''müssen'' zuerst die letzte offizielle Version von FPC installieren. Laden Sie sie von hier http://sourceforge.net/projects/freepascal/ herunter und installieren Sie sie. Oder lesen Sie weitere Details hier: [[Installing_Lazarus#Installing_The_Free_Pascal_Compiler|Installing the Free Pascal Compiler]].<br />
<br />
Erzeugen Sie dann ein Verzeichnis und laden Sie FPC von SVN herunter:<br />
<br />
mkdir -p ~/freepascal<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/fpc/trunk fpc<br />
<br />
Dies wird einige Zeit dauern.<br />
<br />
Sie können allerdings auch den TortoiseSVN-Client für Windows einsetzen wie bereits zuvor beschrieben.<br />
<br />
==Kompilieren und Installieren von FPC==<br />
<br />
Es gibt viele Arten, FPC zu kompilieren und zu installieren.<br />
<br />
* Benutzen Sie einfach ''make''.<br />
* Erstellen Sie ein FPC-Package für Ihre Linux-Distribution (.deb oder .rpm Datei). Das Package erlaubt es, FPC einfach zu deinstallieren, zu upgraden oder downgraden und stellt sicher, dass alle Dateien in die richtigen Verzeichnisse installiert werden. Wenn also irgend etwas schief läuft, können Ihnen andere Benutzer zu Hilfe kommen.<br />
<br />
In jedem Fall muss Lazarus abschließend noch für den neuen FPC konfiguriert werden.<br />
<br />
===Erstellen und Installieren von Free Pascal unter UNIX-ähnlichen Systemen===<br />
<br />
Die folgenden Instruktionen gelten für UNIX-ähnliche Plattformen, wie z.B. Linux, aber auch für Mac OS X.<br />
<br />
Free Pascal aus dem Quellcode zu erstellen, kann in einigen Situationen nützlich sein. Ein Beispiel stellt das Debuggen eines Problems im Compiler dar, in der RTL oder in der FCL. Die ausgelieferten FPC-Installationen kommen ohne Debug-Informationen daher, aber Installationen, die mittels der Makefiles erstellt wurden, enthalten diese Debug-Informationen als Vorgabe. Ein weiteres Anwendungsbeispiel ist das Austesten einer Entwicklungsversion des Compilers, obwohl dafür oftmals auch Schnappschüsse verfügbar sind.<br />
<br />
<b>Schritt 1 - Stellen Sie sicher, dass Sie einen kompatiblen, startenden Compiler installiert haben.</b><br />
<br />
Üblicherweise bedeutet das, dass Sie die letzte stabile Version installiert haben.<br />
<br />
<b>Schritt 2 - Laden Sie die Quelltexte des neuen Compilers herunter</b><br />
<br />
Als erstes sollten Sie den Free Pascal Quellcode der Version herunterladen, die Sie zu erstellen wünschen. Um, zum Beispiel, die letzten Fixes des 2.4 Zweiges herunter zu laden, geben Sie ein:<br />
<br />
svn checkout http://svn.freepascal.org/svn/fpc/branches/fixes_2_4 fpcfixes2_4<br />
<br />
<b>Schritt 3 - Erstellen des Compilers</b><br />
<br />
Wechseln Sie nun in das neu erzeugte Verzeichnis und erstellen und installieren Sie Free Pascal:<br />
<br />
cd fpcfixes2_4<br />
make clean all install INSTALL_PREFIX=~<br />
<br />
Dadurch wird der Compiler in 3 Durchläufen übersetzt, indem zuerst der bereits installierte Compiler und dann der neu übersetzte Compiler benutzt wird.<br />
<br />
Es installiert alle benötigten Dateien im angegebenen Verzeichnis. Falls nötig, installieren Sie in ein anderes Verzeichnis. Sie müssen allerdings mit dem Root-Konto angemeldet sein, bzw. Administrator-Rechte haben, wenn mit einem normalen Benutzerkonto kein Schreibzugriff auf dieses Verzeichnis möglich ist.<br />
<br />
<b>Schritt 4 - Aktualisieren Sie Ihre fpc.cfg Datei</b><br />
<br />
Dann erzeugen Sie die Datei<br />
~/.fpc.cfg<br />
<br />
Dies ist eine verborgene Datei (beachten Sie den ersten Punkt). Geben Sie folgende Zeilen in diese Datei ein. Falls Sie in ein anderes Verzeichnis installiert haben, nehmen Sie statt dessen Ihr eigenes home-Verzeichnis.<br />
<br />
#include /etc/fpc.cfg<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/*<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/rtl<br />
<br />
Dadurch werden zukünftige Versionen in PREFIX=~ installiert, ohne diese Konfigurationsdatei anzurühren.<br />
<br />
Um fpc zu starten, muss ~/bin in der Umgebungsvariablen PATH stehen. Normalerweise ist es bereits standardgemäß dort.<br />
Sie müssen auch ~/lib/fpc/2.5.1 an PATH anfügen, weil sich das aktuelle Compiler-Binary dort befindet.<br />
Die meisten Linuxsysteme verwenden die Bash-Shell und diese Einstellung kann zur Datei ~/.bashrc (wieder eine versteckte Datei) hinzugefügt werden:<br />
export PATH=~/lib/fpc/2.5.1:$PATH<br />
<br />
Beachten Sie: Der Pfadseparator ist ":" unter Linux (";" unter Windows). Lesen Sie nun "Configure Lazarus for the new fpc" unten für den nächsten Schritt.<br />
<br />
===Erstellen eines Debian/Ubuntu Packages===<br />
<br />
'''Wichtig''': Dieses Skript erzeugt '''nicht''' die offiziellen Debian/Ubuntu Packages. Es erzeugt ein FPC-Package das den Compiler und alle benötigten Packages enthält. <br />
<br />
Um dieses Package zu erstellen, müssen Sie zuerst einige Packages installieren:<br />
<br />
sudo apt-get install libgpmg1-dev fakeroot libncurses5-dev build-essential<br />
<br />
Gehen Sie in das Lazarus Quelltextverzeichnis. Dieses Verzeichnis muss die Schreibrechte besitzen.<br />
<br />
cd ~/freepascal/lazarus/tools/install<br />
./create_fpc_deb.sh fpc ~/freepascal/fpc<br />
<br />
Falls Sie eine Fehlermeldung über eine fehlende Datei oder ein fehlendes Werkzeug erhalten müssen Sie das fehlende Package nachinstallieren. Falls Sie eine Kompiler-Fehlermeldung erhalten, dann ist Ihr installierter FPC nicht die offizielle Version oder Sie hatten Pech und haben sich eine fehlerhafte SVN-Version heruntergeladen. Suchen Sie Hilfe über die Mailing-Liste, das Forum oder den Chat.<br />
Falls alles geklappt hat, haben Sie jetzt eine .deb-Datei, die Sie installieren können:<br />
<br />
sudo dpkg -i fpc_2.5.1-091121_i386.deb<br />
<br />
Der Dateiname wird bei Ihnen etwas anders lauten.<br />
<br />
===Erstellen eines RPM-Packages===<br />
<br />
ToDo...<br />
<br />
===Lazarus für den neuen FPC einrichten===<br />
<br />
FPC ist jetzt installiert, entweder mittels "make install" oder dadurch, dass Sie ein distributionsspezifisches Package verwenden.<br />
Der nächste Schritt ist das Kompilieren von Lazarus SVN mit dem neuen Compiler und die IDE anzuweisen, das Verzeichnis ''/home/username/freepascal/fpc'' als ''FPC Quelltext-Verzeichnis'' zu benutzen.<br />
<br />
Falls Sie Lazarus SVN bislang noch nicht heruntergeladen haben, tun Sie das jetzt: [[Getting_Lazarus#Development_versions_from_SVN|Development versions from SVN]]. Zum Beispiel:<br />
<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus<br />
<br />
Dies wird einige Zeit dauern, anschließend geht es weiter mit:<br />
cd ~/freepascal/lazarus<br />
make clean all<br />
<br />
Wenn Sie dabei Linker-Fehlermeldungen erhalten, müssen Sie einige zusätzliche Packages installieren (build-essential, libgtk2.0-dev,libgdk-pixbuf-dev).<br />
Starten Sie die IDE:<br />
cd ~/freepascal/lazarus<br />
./lazarus<br />
<br />
Das ist eine minimalistische IDE ohne irgendwelche Extra-Packages. Nun muss die IDE eingerichtet werden, dann kann sie mit den Packages erstellt werden: <br />
<br />
* Gehen Sie zu Werkzeuge / Einstellungen / Umgebung <br />
* Setzen Sie das ''Lazarus-Verzeichnis'' auf ''/home/username/freepascal/lazarus'' <br />
* Setzen Sie das ''FPC-Quelltextverzeichnis'' auf ''/home/username/freepascal/fpc''<br />
* Klicken Sie auf ''Ok''. Das schließt den Dialog.<br />
* Werkzeuge / Lazarus kompilieren einrichten / Quick Build Options / IDE mit Packages neu kompilieren<br />
* Klicken Sie auf ''Neu kompilieren''.<br />
* Starten Sie die IDE neu<br />
* Jetzt haben Sie die neueste und beste IDE, erstellt mit dem neuesten und besten FPC.<br />
<br />
== Entwicklungsversionen über Git holen ==<br />
Es gibt einen [[git mirrors|Git Spiegelserver]] des offiziellen SubVersion-Repository der über [http://github.com/ GitHub] erreichbar ist. Dieser Spiegelserver wird alle 15 Minuten mit dem SubVersion-Repository abgeglichen. Für weitere Informationen darüber, wie Sie [http://git-scm.com/ Git] erhalten können und damit das Lazarus-Repository klonen können, folgen Sie diesem Link: [[git mirrors|Git Mirrors]].<br />
Sie können 'git' auch direkt über den SubVersion-Server erreichen; nehmen Sie den Link 'git-svn'. Siehe [[Lazarus git-svn|Lazarus git-svn]] für weitere Details.<br />
<br />
== Entwicklungsversionen über Mercurial holen==<br />
<s>There is a Hg mirror of the official SubVersion repository being maintained on [http://florianklaempfl.de:8000/lazarustrunk/ florianklaempfl.de].</s><br />
<br />
Dieser Mirror existiert nicht mehr. Siehe die [http://lists.freepascal.org/lists/fpc-devel/2010-June/020442.html Mitteilung] von Florian Klämpfl.<br />
<br />
==Schnappschuss-Methode==<br />
<br />
Wenn Sie SVN nicht direkt verwenden wollen, können sie einen täglich aktualisierten Schnappschuss ausprobieren. Eine Liste der Mirrors finden Sie auf der Seite [[Lazarus Snapshots Downloads]].<br />
<br />
==Verwenden von fpclazup==<br />
In einem [http://forum.lazarus.freepascal.org/index.php/topic,27211.225.html Forenbeitrag von DonAlfredo am04.01.2017] schreibt dieser, die fpc(laz)up Binaries würden nicht länger wie bisher als Teil eines commits verteilt, sondern seien künftig ein eigenes release: [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases].<br />
<br />
Um auf einem diesbezüglich noch völlig "blanken" Rechner ein aktuelles fpc und lazarus zu installieren, geht man also wie folgt vor:<br />
<br />
* Download des passenden Binaries (z.B. fpclazup-x86_64-linux) von [https://github.com/LongDirtyAnimAlf/Reiniero-fpcup/releases ]<br />
* unter Linux: das heruntergeladene Binary ausführbar machen (z.B. "chmod a+x fpclazup-x86_64-linux")<br />
* Starten des Binaries<br />
<br />
Bei einem erfolgreichen Programmlauf sollten in der Ausgabe nur Zeilen der Art <br />
fpclazup: info: ...<br />
auftauchen; einzige Ausnahme<br />
helplazarus: WARNING: ~/development/lazarus/docs/chm/lcl/lcl.chm was created but is empty")<br />
<br />
==Durchsuchen des Quelltext-Repositorys mit einem Web-Browser==<br />
<br />
Die Inhalte des SVN-Archivs können auch mit einem Web-Browser durchsucht werden über die [http://www.freepascal.org/cgi-bin/viewcvs.cgi/?root=lazarus ViewCVS] Schnittstelle.<br />
<br />
==Lazarus Distributionen==<br />
<br />
Es gibt einige inoffizielle Seiten, wo Sie Lazarus und Free Pascal ebenfalls finden können:<br />
*You can get a Ubuntu LiveCD from Austrian University of Applied Sciences hosting <br />
http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso<br />
und die md5sum Datei http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso.md5.<br />
<br />
==Mitwirkende und Änderungen==<br />
<br />
Diese Seite wurde konvertiert von der epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=GettingLazarus Version].<br />
<br />
[[Category:Lazarus/de]]</div>Arabidopsishttps://wiki.freepascal.org/index.php?title=Getting_Lazarus/de&diff=107011Getting Lazarus/de2017-02-02T09:48:38Z<p>Arabidopsis: </p>
<hr />
<div>{{Getting Lazarus}}<br />
<br />
==Download und Installation einer offiziellen Version von Lazarus==<br />
<br />
=== Von SourceForge ===<br />
<br />
Binäre Releases für verschiedene Plattformen sind hier [http://sourceforge.net/project/showfiles.php?group_id=89339 Lazarus Sourceforge Download Bereich] verfügbar.<br />
<br />
=== Für bestimmte Plattformen ===<br />
<br />
Lazarus für Windows erhalten - benutzen Sie den obigen Link zu Sourceforge.<br />
<br />
[[Lazarus release version for Ubuntu|Get Lazarus for Ubuntu]]<br />
<br />
[[Lazarus release version for Fedora|Get Lazarus for Fedora]]<br />
<br />
[[Lazarus release version for Suse|Get Lazarus for Suse]]<br />
<br />
[[Lazarus release version for Mandriva|Get Lazarus for Mandriva]]<br />
<br />
[[Lazarus release version for Mac|Get Lazarus for Mac]]<br />
<br />
[[Lazarus on Solaris]]<br />
<br />
== Holen Sie sich SVN==<br />
<br />
=== TortoiseSVN Client ===<br />
<br />
TortoiseSVN ist ein SVN-Client nur für Windows. Sie können ihn von http://tortoisesvn.tigris.org/ herunterladen. Das Programm unterstützt zunächst nur die englische Sprache. Weitere Sprachen (z.B. Deutsch) müssen durch separate Pakete (auf der selben Seite erhältlich) nachgerüstet werden.<br />
<br />
[[TortoiseSvn|Diese Seite]] zeigt Ihnen, wie Sie Lazarus SVN Quelltexte herunterladen und aktualisieren können. Aber auch für FPC-Quelltexte ist dieses Verfahren in gleicher Weise anwendbar.<br />
<br />
=== Andere SVN-Clients ===<br />
<br />
Ein SVN-Kommandozeilen-Client ist von der offiziellen SVN [http://subversion.tigris.org/ Internetseite] für viele Plattformen erhältlich.<br />
Unter Linux wird empfohlen, ''Subversion'' mit dem Paketmanagementsystems ihrer Distribution zu installieren. Zum Beispiel:<br />
<br />
sudo apt-get install subversion<br />
<br />
Mac OS X enthält svn ab der Version 10.5. Bei älteren Versionen müssen Sie es selbst installieren.<br />
<br />
==Holen Sie sich eine Lazarus SVN Entwicklungsversion==<br />
<br />
=== Von der Kommandozeile aus ===<br />
<br />
Um Lazarus zum ersten Mal zu erhalten:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Verzeichnis, in dem Sie den Lazarus-Ordner erstellen wollen und tippen Sie:<br />
<nowiki>svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Um die Lazarus-Quellen zu aktualisieren:<br />
<br />
Öffnen Sie eine Terminal/Kommandozeile, wechseln Sie in das Lazarus-Verzeichnis und tippen Sie:<br />
svn update<br />
<br />
Zum Kompilieren siehe [[#Compiling_and_installing_Lazarus|hier]].<br />
<br />
===Alternative URLs===<br />
Manchmal funktioniert die oben genannte URL des Repository nicht, weil sich zwischen Ihnen und dem SVN-Server ein http-Proxy-Server befindet. Dieser Server soll zwar oft ein 'transparenter' Proxy sein, aber er leitet Ihre SVN-Kommandos nicht korrekt an den Server svn.freepascal.org weiter.<br />
<br />
Der svn.freepascal.org Server hat aber auch den Port 8080 offen. Vielleicht mischt sich der Proxy-Server nicht in den http-Datenverkehr über diesen Port ein. Deshalb können Sie auch folgendes probieren:<br />
<nowiki>svn co http://svn.freepascal.org:8080/svn/lazarus/trunk lazarus</nowiki> <br />
<br />
Das Lazarus-SVN-Repository wird auf Sourceforge mit einer Verzögerung von 3 Minuten unter Verwendung von svnsync gespiegelt. Das Sourceforge-Repository verwendet das https-Protokoll. Proxy-Server mischen sich bei diesem Protokoll nicht ein. Sie können demnach auch von Sourceforge mit dem folgenden Kommando 'auschecken' (checkout):<br />
<nowiki>svn co https://svn.sourceforge.net/svnroot/lazarus/trunk lazarus</nowiki><br />
<br />
Die FPC- und Lazarus-SVN-Repositories werden auch auf svn2.freepascal.org gespiegelt. Sie können von svn2.freepascal.org aus-checken mit <br />
<nowiki>svn co http://svn2.freepascal.org/svn/lazarus/trunk lazarus</nowiki><br />
<br />
Wenn Sie selbst den Proxy-Server verwalten, oder mit dem Verwalter befreundet sind, gibt es hier Details zur Einrichtung des Proxys zum Weiterleiten der SVN-Befehle: http://subversion.tigris.org/faq.html#proxy Dies enthält ein Beispiel für 'squid'. Vergessen Sie nicht, den SVN-Client für die Benutzung des Proxys einzurichten! (Für TortoiseSVN, siehe 'settings/network').<br />
<br />
===Skripte===<br />
<br />
Es gibt Skripte für Windows und Linux, um das Herunterladen und Erstellen von Lazarus zu automatisieren: [[LazarusScripts|Scripts for Lazarus]]<br />
<br />
==Kompilieren und Installieren von Lazarus==<br />
<br />
Siehe [[Installing Lazarus]] - ein detaillierter Installationsführer, oder http://www.stack.nl/~marcov/buildfaq.pdf - eine noch detailliertere Anleitung.<br />
<br />
===Von der Kommandozeile aus===<br />
<br />
Lazarus wird mit einem Makefile für das GNU "make" Programm geliefert. <br />
<br />
{{Warning|Wenn Sie auch Tools von Codegear (oder Borland) installiert haben, könnte dadurch ein Konflikt mit GNU "make" entstehen}}<br />
<br />
Dieses Tool erlaubt es, Lazarus einfach von der Befehlszeile zu kompilieren. <br />
Sie müssen allerdings zuerst FPC und die FPC-Packages installiert und konfiguriert haben.<br />
<br />
Um zu kompilieren wechseln Sie in der Befehlszeile/einem Terminal in das Lazarus-Verzeichnis und geben ein:<br />
make<br />
<br />
Dadurch werden LCL und Lazarus IDE (mit den installierten Standardpackages) neu erstellt.<br />
<br />
===Make targets===<br />
Die folgenden Kompilier-Profile ("targets") können für das Programm "make" angegeben werden:<br />
<br />
* '''clean''' - the command will clean all compiled LCL and IDE units. Warning, this might make your project uncompilable (even though IDE still run, since binary is not deleted). Zum Beispiel: "''make clean''"<br />
<br />
* '''bigide''' - Dieses Kommando erstellt LCL und IDE mit zusätzlichen Packages neu. Zum Beispiel: "''make bigide''"<br />
<br />
* '''lcl''' - dieser Befehl erstellt nur die LCL neu. Die IDE wird nicht angefasst. Das Kommando ist sehr hilfreich, wenn Sie Änderungen an der LCL vornehmen und testen müssen, wie sich die Änderungen auf ihr Projekt auswirken, ohne die Gefahr, dass Lazarus nicht mehr funktioniert. Das Neuerstellen nur der LCL geht schneller als das Neuerstellen von LCL und IDE zusammen. Zum Beispiel: "''make lcl''"<br />
<br />
* '''components'''<br />
* '''packager/registration'''<br />
* '''ideintf''' <br />
* '''packager'''<br />
* '''bigidecomponents'''<br />
* '''ide''' <br />
* '''idepkg''' <br />
* '''idebig''' <br />
* '''bigide''' <br />
* '''starter''' - the command rebuilds startlazarus binary.<br />
* '''lazbuilder'''<br />
* '''tools''' <br />
* '''all''' <br />
* '''cleanide'''<br />
* '''purge'''<br />
* '''examples''' - the command rebuilds examples lazarus <br />
* '''install''' <br />
* '''lazbuild'''<br />
<br />
<br />
Wenn kein Profil angegeben ist, werden LCL und Lazarus IDE (mit einem Basisset von Komponenten) neu erstellt.<br />
<br />
===Make parameters===<br />
Es gibt zusätzliche Parameter, die für die Erstellung von Lazarus verwendet werden können.<br />
<br />
* '''OPT'''=%compiler_switches<br />
the %compiler_switches is passed to each fpc call. The option is useful for specifying defines<br />
<br />
Zum Beispiel:<br />
make bigide OPT="-dNoGdkPixBufLib -gw2" <br />
erstellt LCL und IDE mit der Option NoGdkPixBufLib sowie dwarf2 Debugging-Informationen. <br />
<br />
* '''LCL_PLATFORM'''=%platform<br />
%platform is the target Widgetset. Es kann win32, gtk, gtk2, qt, carbon oder cocoa sein.<br />
<br />
Zum Beispiel:<br />
make LCL_PLATFORM=gtk2<br />
Erstellt LCL und IDE für das gtk2 Widgetset neu<br />
<br />
* '''FPC'''=%compiler_path<br />
or<br />
* '''PP'''=%compiler_path<br />
%compiler_path is the path to a custom compiler binary you want to build the target with.<br />
<br />
==Holen Sie sich eine FPC SVN Entwicklungsversion==<br />
<br />
Hier sind einige Tipps, wie Sie sich die Entwicklungsversion von FPC (aktuell: 2.5.1) besorgen und installieren können. Diese enthält neue Features und Fehlerkorrekturen, ist aber weniger stabil und enthält auch vermutlich neue Fehler.<br />
Der Compiler ist nicht im Lazarus SVN enthalten, hat aber sein eigenes FPC SVN. Sie ''müssen'' zuerst die letzte offizielle Version von FPC installieren. Laden Sie sie von hier http://sourceforge.net/projects/freepascal/ herunter und installieren Sie sie. Oder lesen Sie weitere Details hier: [[Installing_Lazarus#Installing_The_Free_Pascal_Compiler|Installing the Free Pascal Compiler]].<br />
<br />
Erzeugen Sie dann ein Verzeichnis und laden Sie FPC von SVN herunter:<br />
<br />
mkdir -p ~/freepascal<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/fpc/trunk fpc<br />
<br />
Dies wird einige Zeit dauern.<br />
<br />
Sie können allerdings auch den TortoiseSVN-Client für Windows einsetzen wie bereits zuvor beschrieben.<br />
<br />
==Kompilieren und Installieren von FPC==<br />
<br />
Es gibt viele Arten, FPC zu kompilieren und zu installieren.<br />
<br />
* Benutzen Sie einfach ''make''.<br />
* Erstellen Sie ein FPC-Package für Ihre Linux-Distribution (.deb oder .rpm Datei). Das Package erlaubt es, FPC einfach zu deinstallieren, zu upgraden oder downgraden und stellt sicher, dass alle Dateien in die richtigen Verzeichnisse installiert werden. Wenn also irgend etwas schief läuft, können Ihnen andere Benutzer zu Hilfe kommen.<br />
<br />
In jedem Fall muss Lazarus abschließend noch für den neuen FPC konfiguriert werden.<br />
<br />
===Erstellen und Installieren von Free Pascal unter UNIX-ähnlichen Systemen===<br />
<br />
Die folgenden Instruktionen gelten für UNIX-ähnliche Plattformen, wie z.B. Linux, aber auch für Mac OS X.<br />
<br />
Free Pascal aus dem Quellcode zu erstellen, kann in einigen Situationen nützlich sein. Ein Beispiel stellt das Debuggen eines Problems im Compiler dar, in der RTL oder in der FCL. Die ausgelieferten FPC-Installationen kommen ohne Debug-Informationen daher, aber Installationen, die mittels der Makefiles erstellt wurden, enthalten diese Debug-Informationen als Vorgabe. Ein weiteres Anwendungsbeispiel ist das Austesten einer Entwicklungsversion des Compilers, obwohl dafür oftmals auch Schnappschüsse verfügbar sind.<br />
<br />
<b>Schritt 1 - Stellen Sie sicher, dass Sie einen kompatiblen, startenden Compiler installiert haben.</b><br />
<br />
Üblicherweise bedeutet das, dass Sie die letzte stabile Version installiert haben.<br />
<br />
<b>Schritt 2 - Laden Sie die Quelltexte des neuen Compilers herunter</b><br />
<br />
Als erstes sollten Sie den Free Pascal Quellcode der Version herunterladen, die Sie zu erstellen wünschen. Um, zum Beispiel, die letzten Fixes des 2.4 Zweiges herunter zu laden, geben Sie ein:<br />
<br />
svn checkout http://svn.freepascal.org/svn/fpc/branches/fixes_2_4 fpcfixes2_4<br />
<br />
<b>Schritt 3 - Erstellen des Compilers</b><br />
<br />
Wechseln Sie nun in das neu erzeugte Verzeichnis und erstellen und installieren Sie Free Pascal:<br />
<br />
cd fpcfixes2_4<br />
make clean all install INSTALL_PREFIX=~<br />
<br />
Dadurch wird der Compiler in 3 Durchläufen übersetzt, indem zuerst der bereits installierte Compiler und dann der neu übersetzte Compiler benutzt wird.<br />
<br />
Es installiert alle benötigten Dateien im angegebenen Verzeichnis. Falls nötig, installieren Sie in ein anderes Verzeichnis. Sie müssen allerdings mit dem Root-Konto angemeldet sein, bzw. Administrator-Rechte haben, wenn mit einem normalen Benutzerkonto kein Schreibzugriff auf dieses Verzeichnis möglich ist.<br />
<br />
<b>Schritt 4 - Aktualisieren Sie Ihre fpc.cfg Datei</b><br />
<br />
Dann erzeugen Sie die Datei<br />
~/.fpc.cfg<br />
<br />
Dies ist eine verborgene Datei (beachten Sie den ersten Punkt). Geben Sie folgende Zeilen in diese Datei ein. Falls Sie in ein anderes Verzeichnis installiert haben, nehmen Sie statt dessen Ihr eigenes home-Verzeichnis.<br />
<br />
#include /etc/fpc.cfg<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/*<br />
-Fu~/lib/fpc/$fpcversion/units/$fpctarget/rtl<br />
<br />
Dadurch werden zukünftige Versionen in PREFIX=~ installiert, ohne diese Konfigurationsdatei anzurühren.<br />
<br />
Um fpc zu starten, muss ~/bin in der Umgebungsvariablen PATH stehen. Normalerweise ist es bereits standardgemäß dort.<br />
Sie müssen auch ~/lib/fpc/2.5.1 an PATH anfügen, weil sich das aktuelle Compiler-Binary dort befindet.<br />
Die meisten Linuxsysteme verwenden die Bash-Shell und diese Einstellung kann zur Datei ~/.bashrc (wieder eine versteckte Datei) hinzugefügt werden:<br />
export PATH=~/lib/fpc/2.5.1:$PATH<br />
<br />
Beachten Sie: Der Pfadseparator ist ":" unter Linux (";" unter Windows). Lesen Sie nun "Configure Lazarus for the new fpc" unten für den nächsten Schritt.<br />
<br />
===Erstellen eines Debian/Ubuntu Packages===<br />
<br />
'''Wichtig''': Dieses Skript erzeugt '''nicht''' die offiziellen Debian/Ubuntu Packages. Es erzeugt ein FPC-Package das den Compiler und alle benötigten Packages enthält. <br />
<br />
Um dieses Package zu erstellen, müssen Sie zuerst einige Packages installieren:<br />
<br />
sudo apt-get install libgpmg1-dev fakeroot libncurses5-dev build-essential<br />
<br />
Gehen Sie in das Lazarus Quelltextverzeichnis. Dieses Verzeichnis muss die Schreibrechte besitzen.<br />
<br />
cd ~/freepascal/lazarus/tools/install<br />
./create_fpc_deb.sh fpc ~/freepascal/fpc<br />
<br />
Falls Sie eine Fehlermeldung über eine fehlende Datei oder ein fehlendes Werkzeug erhalten müssen Sie das fehlende Package nachinstallieren. Falls Sie eine Kompiler-Fehlermeldung erhalten, dann ist Ihr installierter FPC nicht die offizielle Version oder Sie hatten Pech und haben sich eine fehlerhafte SVN-Version heruntergeladen. Suchen Sie Hilfe über die Mailing-Liste, das Forum oder den Chat.<br />
Falls alles geklappt hat, haben Sie jetzt eine .deb-Datei, die Sie installieren können:<br />
<br />
sudo dpkg -i fpc_2.5.1-091121_i386.deb<br />
<br />
Der Dateiname wird bei Ihnen etwas anders lauten.<br />
<br />
===Erstellen eines RPM-Packages===<br />
<br />
ToDo...<br />
<br />
===Lazarus für den neuen FPC einrichten===<br />
<br />
FPC ist jetzt installiert, entweder mittels "make install" oder dadurch, dass Sie ein distributionsspezifisches Package verwenden.<br />
Der nächste Schritt ist das Kompilieren von Lazarus SVN mit dem neuen Compiler und die IDE anzuweisen, das Verzeichnis ''/home/username/freepascal/fpc'' als ''FPC Quelltext-Verzeichnis'' zu benutzen.<br />
<br />
Falls Sie Lazarus SVN bislang noch nicht heruntergeladen haben, tun Sie das jetzt: [[Getting_Lazarus#Development_versions_from_SVN|Development versions from SVN]]. Zum Beispiel:<br />
<br />
cd ~/freepascal<br />
svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus<br />
<br />
Dies wird einige Zeit dauern, anschließend geht es weiter mit:<br />
cd ~/freepascal/lazarus<br />
make clean all<br />
<br />
Wenn Sie dabei Linker-Fehlermeldungen erhalten, müssen Sie einige zusätzliche Packages installieren (build-essential, libgtk2.0-dev,libgdk-pixbuf-dev).<br />
Starten Sie die IDE:<br />
cd ~/freepascal/lazarus<br />
./lazarus<br />
<br />
Das ist eine minimalistische IDE ohne irgendwelche Extra-Packages. Nun muss die IDE eingerichtet werden, dann kann sie mit den Packages erstellt werden: <br />
<br />
* Gehen Sie zu Werkzeuge / Einstellungen / Umgebung <br />
* Setzen Sie das ''Lazarus-Verzeichnis'' auf ''/home/username/freepascal/lazarus'' <br />
* Setzen Sie das ''FPC-Quelltextverzeichnis'' auf ''/home/username/freepascal/fpc''<br />
* Klicken Sie auf ''Ok''. Das schließt den Dialog.<br />
* Werkzeuge / Lazarus kompilieren einrichten / Quick Build Options / IDE mit Packages neu kompilieren<br />
* Klicken Sie auf ''Neu kompilieren''.<br />
* Starten Sie die IDE neu<br />
* Jetzt haben Sie die neueste und beste IDE, erstellt mit dem neuesten und besten FPC.<br />
<br />
== Entwicklungsversionen über Git holen ==<br />
Es gibt einen [[git mirrors|Git Spiegelserver]] des offiziellen SubVersion-Repository der über [http://github.com/ GitHub] erreichbar ist. Dieser Spiegelserver wird alle 15 Minuten mit dem SubVersion-Repository abgeglichen. Für weitere Informationen darüber, wie Sie [http://git-scm.com/ Git] erhalten können und damit das Lazarus-Repository klonen können, folgen Sie diesem Link: [[git mirrors|Git Mirrors]].<br />
Sie können 'git' auch direkt über den SubVersion-Server erreichen; nehmen Sie den Link 'git-svn'. Siehe [[Lazarus git-svn|Lazarus git-svn]] für weitere Details.<br />
<br />
== Entwicklungsversionen über Mercurial holen==<br />
<s>There is a Hg mirror of the official SubVersion repository being maintained on [http://florianklaempfl.de:8000/lazarustrunk/ florianklaempfl.de].</s><br />
<br />
Dieser Mirror existiert nicht mehr. Siehe die [http://lists.freepascal.org/lists/fpc-devel/2010-June/020442.html Mitteilung] von Florian Klämpfl.<br />
<br />
==Schnappschuss-Methode==<br />
<br />
Wenn Sie SVN nicht direkt verwenden wollen, können sie einen täglich aktualisierten Schnappschuss ausprobieren. Eine Liste der Mirrors finden Sie auf der Seite [[Lazarus Snapshots Downloads]].<br />
<br />
==Verwenden von fpclazup==<br />
<br />
<br />
==Durchsuchen des Quelltext-Repositorys mit einem Web-Browser==<br />
<br />
Die Inhalte des SVN-Archivs können auch mit einem Web-Browser durchsucht werden über die [http://www.freepascal.org/cgi-bin/viewcvs.cgi/?root=lazarus ViewCVS] Schnittstelle.<br />
<br />
==Lazarus Distributionen==<br />
<br />
Es gibt einige inoffizielle Seiten, wo Sie Lazarus und Free Pascal ebenfalls finden können:<br />
*You can get a Ubuntu LiveCD from Austrian University of Applied Sciences hosting <br />
http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso<br />
und die md5sum Datei http://www.sigma-server.com/liveCD/Ubuntu-7.10-NTC-Lazarus.iso.md5.<br />
<br />
==Mitwirkende und Änderungen==<br />
<br />
Diese Seite wurde konvertiert von der epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=GettingLazarus Version].<br />
<br />
[[Category:Lazarus/de]]</div>Arabidopsis