Path Resolution
Source Directories
Default Source Directories:
{src_dirs, ["src"]}.
Multiple Source Directories:
{src_dirs, ["src", "lib", "core"]}.
Recursive Source Directories:
{src_dirs, [
"src",
{"lib", [{recursive, true}]}
]}.
Include Directories
Include Path Priority (for rebar_compiler_erl):
- Application's
include/directory - Directories from
{i, Dir}inerl_opts - All source directories (recursively if configured)
- Top-level application directory
- All project apps' include directories (during compilation)
Example:
{erl_opts, [
{i, "custom_include"},
{i, "/absolute/path/include"}
]}.
Output Directories
Application Output: _build/PROFILE/lib/APPNAME/
- Mirrors source structure
ebin/: Compiled artifactspriv/: Copied private resourcesinclude/: Available to other apps
Dependency Output: _build/PROFILE/lib/DEPNAME/
- Same structure as application output
- Fetched from cache or remote
Library Directories
lib_dirs Configuration:
{lib_dirs, ["apps", "components"]}.
Purpose: Where to find application directories during discovery
Default: [] (only scan project root)
Extra Source Directories
Configuration:
{extra_src_dirs, ["test", "scripts"]}.
Output: _build/PROFILE/extras/DIRNAME/
Module List: Not included in .app file