Rather than going down the lazbuild path as others have suggested, you might want to think about fpcmake and creating a "Makefile.fpc" for your project. That should be the standard way of building a lazarus project just using fpc.

You will need to write a Makefile.fpc that does the same job as the lazarus .lpi file and include the LCL and components you use in the search paths but once you have done it once, its very easy to copy and paste to then next project. Here's a snippet that I often use:

[compiler]
options= -Scghi -O3 -CX -Xs -vewnhi -l -dUseCThreads -dLCL -dLCL$(INTERFACE)
unittargetdir=units/$(CPU_TARGET)-$(OS_TARGET)
unitdir= $(LZSOURCE) .

[target]
programs=myprogram

where I have defined under [prerules}

SRCDIR=/my/path/to/lazarus

LZSOURCE=\
$(SRCDIR)/lazarus/components/cairocanvas/lib/$(CPU_TARGET)-$(OS_TARGET)/$(INTERFACE) \ $(SRCDIR)/lazarus/components/lazcontrols/lib/$(CPU_TARGET)-$(OS_TARGET)/$(INTERFACE) \ $(SRCDIR)/lazarus/components/ideintf/units/$(CPU_TARGET)-$(OS_TARGET)/$(INTERFACE) \
$(SRCDIR)/lazarus/packager/units/$(CPU_TARGET)-$(OS_TARGET)/ \
$(SRCDIR)/lazarus/lcl/units/$(CPU_TARGET)-$(OS_TARGET)/ \
$(SRCDIR)/lazarus/components/lazutils/lib/$(CPU_TARGET)-$(OS_TARGET)/ \
$(SRCDIR)/lazarus/lcl/units/$(CPU_TARGET)-$(OS_TARGET)/$(INTERFACE) \
$(SRCDIR)/lazarus/components/memds/lib/$(CPU_TARGET)-$(OS_TARGET)/$(INTERFACE) \ $(SRCDIR)/lazarus/components/printers/lib/$(CPU_TARGET)-$(OS_TARGET)/$(INTERFACE)

Note that this includes a few common components. You need to include the path to each component you are using which may vary from the above. The above also assumes that the components have already been compiled - which should be true if they are included in the IDE.

To build for a GTK2 target, you will then need to run:

export FPCDIR=/usr/lib/fpc/`fpc -iV`
fpcmake  Makefile.fpc
make INTERFACE=gtk2

If you are running on Windows then you will do something like:
FPCDIR=<whereever fpc is>
fpcmake  Makefile.fpc
make INTERFACE=win32

I tend to perform Windows builds using a cross compiler on Linux, because its so much easier to script. The you will call something like:

export FPCDIR=/usr/lib/fpc/`fpc -iV`
fpcmake -r -Ti386-win32 Makefile.fpc
make OS_TARGET=win32 CPU_TARGET=i386 BINUTILSPREFIX=amd64-mingw32msvc- INTERFACE=win32

Tony Whyman
MWA



On 24/09/15 14:48, Bo Berglund wrote:
I want to check my options regarding Lazarus and FPC.

If I develop a program on Windows Lazarus, move it to Debian Lazarus
(x86) and then finally want to compile on ARM on for example Raspberry
Pi but outside of Lazarus, how is that done?
Does FPC recognize the Lazarus project file such that paths etc are
observed?
Or is thare a separate file for FPC I have to prepare in order to set
the unit paths?



_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to