это делается двумя возможными путями: первый через $(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 секунд:так сказать