Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2026-02

Uses clause with in patrh

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Adriaan van Os

Section 16.1 Programs of the FreePascal Language Reference Guide describes the uses clause and also discusses the optional in keyword with a path string literal. It says

	program programb;
	uses unita in ’..\unita.pp’;
	unita is searched in the parent directory of the programb source file.

However, the actual behaviour of the [331 macOS] compiler seems to be, not to take a relative path from the main program (or library) file, but from the OS process current path !! I would rather prefer the documented behaviour, as relying on the current path is risky and ambiguous and it could lead to very nasty bugs.

Regards,

Adriaan van Os

[Mac-mini:~/fpc-test/usespath] administrator% ls -l -R total 0
drwxr-xr-x 4 administrator staff 128 Feb 4 14:46 prog drwxr-xr-x 3 administrator staff 96 Feb 4 14:46 unit

./prog:
total 8
-rw-r--r--@ 1 administrator staff 78 Feb 4 14:32 testusespath.pas

./unit:
total 8
-rw-r--r--@ 1 administrator staff 105 Feb 4 14:31 useme.pas

[Mac-mini:~/fpc-test/usespath] administrator% cat prog/testusespath.pas

program testusespath;
uses
   useme in '../unit/useme.pas';
begin
   A
end.

[Mac-mini:~/fpc-test/usespath] administrator% cat unit/useme.pas

unit useme;
interface
procedure A;
implementation
procedure A;
begin
   writeln( 'use me')
end;
end.

Mac-mini:~/fpc-test/usespath/prog] administrator% fpc testusespath.pas Free Pascal Compiler version 3.2.4-rc1 [2025/10/15] for x86_64 Copyright (c) 1993-2024 by Florian Klaempfl and others Target OS: Darwin for x86_64
Compiling testusespath.pas
Compiling ../unit/useme.pas
Assembling useme
Assembling testusespath
Linking testusespath
ld: warning: -multiply_defined is obsolete
-macosx_version_min has been renamed to -macos_version_min 23 lines compiled, 11.2 sec

[Mac-mini:~/fpc-test/usespath/prog] administrator% cd ..

[Mac-mini:~/fpc-test/usespath] administrator% fpc prog/testusespath.pas Free Pascal Compiler version 3.2.4-rc1 [2025/10/15] for x86_64 Copyright (c) 1993-2024 by Florian Klaempfl and others Target OS: Darwin for x86_64
Compiling prog/testusespath.pas
testusespath.pas(5,3) Fatal: Can't find unit useme used by testusespath Fatal: Compilation aborted
Error: /usr/local/bin/ppcx64 returned an error exitcode

Reply by email