это делается двумя возможными путями: первый через $(TargetCPU)-$(TargetOS) в путях, они подставляются, но тогда надо чтобы в точности совпадали названия папок с названия платформ в FPC, типа i386-win32 или как-то так. Это работает без Lazarus
Вторая возможность реализуется через лазарус-пакеты, там такая фича есть, пишутся такие типа скрипты
- Код: Выделить всё
- // LCLWidgetType
 if LCLWidgetType+''='' then begin
 if GetIDEValue('OS')=TargetOS then begin
 // use the same widgettype as the IDE
 LCLWidgetType := GetIDEValue('LCLWidgetType');
 if LCLWidgetType='nogui' then
 LCLWidgetType:='';
 end;
 if LCLWidgetType+''='' then begin
 if (TargetOS='win32') or (TargetOS='win64') then
 LCLWidgetType := 'win32'
 else if TargetOS='wince' then
 LCLWidgetType := 'wince'
 else if TargetOS='darwin' then
 LCLWidgetType := 'carbon'
 else
 LCLWidgetType:='gtk2';
 end;
 end;
 
 // widget set specific options
 base := LCLWidgetType+'/';
 if LCLWidgetType='gtk3' then
 begin
 CustomOptions := '-dgtk3';
 UnitPath := base + 'gtk3bindings';
 end else
 if LCLWidgetType='gtk' then
 CustomOptions := '-dgtk1'
 else if LCLWidgetType='carbon' then begin
 CustomOptions := '-dcarbon';
 UnitPath := base+'objc;'
 +base+'pascocoa/appkit;'
 +base+'pascocoa/foundation';
 IncPath := UnitPath;
 end else if LCLWidgetType='cocoa' then begin
 CustomOptions := '-dcocoa';
 if TargetCPU<>'i386' then
 CustomOptions += ' -dNoCarbon';
 end else if LCLWidgetType='wince' then begin
 CustomOptions := '-dDisableChecks';
 end else if LCLWidgetType='fpgui' then begin
 if undefined(fpGUIPlatform) then begin
 if SrcOS='win32' then
 fpGUIPlatform := 'gdi;'
 else
 fpGUIPlatform := 'x11;';
 end;
 CustomOptions := ' -dfpgui'+fpGUIPlatform;
 UnitPath := base+'src/gui;'
 +base+'src/corelib;'
 +base+'src/corelib/'+fpGUIPlatform
 +base+'src/corelib/reportengine;';
 IncPath := UnitPath+base+'src;';
 end else if LCLWidgetType='customdrawn' then begin
 UnitPath := base+'android;';
 end;
 
 // linker options
 if TargetOS='darwin' then begin
 if LCLWidgetType='gtk' then
 UsageLibraryPath := '/usr/X11R6/lib;/sw/lib'
 else if LCLWidgetType='gtk2' then
 UsageLibraryPath := '/usr/X11R6/lib;/sw/lib;/sw/lib/pango-ft219/lib'
 else if LCLWidgetType='carbon' then begin
 UsageLinkerOptions := '-framework Carbon'
 +' -framework OpenGL'
 +' ''-dylib_file'' ''/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib''';
 end else if LCLWidgetType='cocoa' then
 UsageLinkerOptions := '-framework Cocoa';
 end else if TargetOS='solaris' then begin
 UsageLibraryPath:='/usr/X11R6/lib';
 end else if TargetOS='linux' then begin
 if (LCLWidgetType='gtk') or (LCLWidgetType='gtk2') then
 UsageLibraryPath := '/opt/gnome/lib'; // for SuSE
 end;
- из пакета LCL
Такие скрипты назначают пути в лазарус-пакетах в зависимости от платформы
Добавлено спустя 34 секунды:Ну или через дефайны-инклуды, эт третья возможность
Добавлено спустя 10 секунд:так сказать