I am supply {$R *.res} only as generic example. With an {$R filename.res} the same problem.
I know this cases when compiling project:
1) Units available only in *.ppu/*.o (etc., compiled units). == Resource, linked by {$R} in these units must be searched relative to these compiled units.
2) Available both - source *.pp and compiled *.ppu, but *.pp unmodified, so used *.ppu for linking.
== a) Resource, linked by {$R} in these units must be searched relative to these compiled units.
== b) If not found - read source *.pp and search resource relative to this *.pp.
3) Available both - source *.pp and compiled *.ppu, but *.pp modified OR available only source *.pp and it recompiled.
== Resource, linked by {$R} in these units must be searched relative to *.pp.
In FPC 3.0.0 approach (1) and (2a) don't work, (2a) and (3) works partially - only the first compilation succeeded, when path's to *.res resolved by reading source *.pp files. The next compilations fails becouse *.res searched relative to *.ppu files, but we need put this *.res here manually. In previous versions there is no such behavior.
On Fri, 4 Nov 2016 11:46:24 +0200 (EEST)
{$R *.res} in ONLY allowed for the project file.
You should never try to link in a * resource in a unit, because the *
resolves to the main project name.
Same as in Delphi.
If you need a resource in a unit, resolve the full name, like {$R
myunit1.res}
Show quoted text 8 lines
The main *.res is available over all units in a project.
"NetSpirit"
wrote:
> CONDITIONS
> Unit file contains {$R *.res} directive. File *.res exists in the same
directory where *.pp file for unit exists.
Show quoted text 9 lines
> Compiled units resides in subdirectory, for example called
> 'units' (-FU command line switch).
> DESCRIPTION
> When project with such unit compiled first time - all work as
> expected. Compiled *.ppu files goes to 'units', resulting binary created.
> On the second and next compilations we encounter en error:
> "Error: Can't open file 'D:\projectpath\units\Unit1.res'".
> This error is a result of searching *.res in a directory where
> compiled units exists, but not in a directory where unit source file
resided.
Show quoted text 12 lines