![]() | ![]() | ![]() | define-module | ![]() |
| [Macro] |
Purpose
Defines a module to the Module Manager Facility.
Package :module-manager
Module :module-manager
Arguments and values
module-name | A keyword symbol naming a module | |
documentation | A documentation string (not evaluated) | |
module-options | See below |
Errors
The :requires
module option specifies a fully expanded
required-module order that contains a circularity.
The :requires
module option specifies a fully expanded
required-module order that conflicts with the fully expanded
required-module order in a previously defined module.
Detailed syntax
| (:requires module-name*) | |
(:directory directory-specifier) | | |
(:files file-specifier*) | | |
(:patches file-specifier*) | |
| root-or-relative-directory subdirectory* |
| file-name | |
( file-name file-option*) | |
| :recompile |
:reload | :source |
:forces-recompile | :noload |
Terms
root-or-relative-directory | A keyword naming a root or
relative directory, a keyword naming another module,
or nil , indicating that the module is rooted at the
*load-truename* | |
subdirectory | A string naming a subdirectory | |
file-name | A string naming a file | |
module-name | A keyword symbol naming a module |
Description
The module-options :requires
:directory
:files
, and :patches
can be specified
in any order, but at most one of each is allowed.
If a :directory
module option is not specified, an implicit root
directory for the module (at the *load-truename*
:directory
The :requires
module option specifies, in order, the modules
that must be loaded before this module. The fully expanded
required-module order determined from the specified
:requires
The :files
module option specifies, in order, the files that are
compiled (when appropriate) and loaded for this module. Similarly,
the :patches
:requires
:files
, and :patches
patches
File-options have the following effects:
:developing | If the patch file has changed, recompile and reload it (patch files only) |
:forces-recompile | If the file has changed, recompile and reload all subsequent files and modules |
:noload | Compile, but do not load the file |
:recompile | Always recompile the file |
:reload | Always reload the file |
:skip-recompile | Skip recompiling the file if it has been loaded already |
(takes precedence over other recompilation decisions) | |
:source | Do not compile the file (load the source instead) |
The documentation
module
.
See also
define-relative-directory
define-root-directory
describe-module
describe-patches
compile-module
continue-patch
get-patch-description
finish-patch
load-module
load-module-file
patch
patch-loaded-p
start-patch
with-system-name
with-module-redefinitions
Examples
Define a root directory and module for :my-app
(define-root-directory :my-app-root (make-pathname :directory "~/my-app")) (define-module :my-app "My simple application module" (:requires :gbbopen-user) (:directory :my-app-root) (:files "preamble" ("macros" :forces-recompile) "classes" "my-app" "epilogue"))
Define a module for :my-app
(define-module :my-app "My simple application module" (:requires :gbbopen-user) (:files "preamble" ("macros" :forces-recompile) "classes" "my-app" "epilogue"))
Retrieve and then modify the documentation string of module :my-app
> (documentation ':my-app 'module) "My simple application module" > (setf (documentation ':my-app 'module) "My way cool application module") "My way cool application module" > (documentation ':my-app 'module) "My way cool application module" >
The GBBopen Project
![]() | ![]() | ![]() | define-module | ![]() |