Predefined node variables

Each Project Manager node has a defined set of variables containing values determined at runtime.

These variables can be used in Build rules or Environment variables. The variables available on a node are the concatenation of the variables defined for the node plus the ones defined for its ancestors.

Table 1. Predefined node variables (X indicates available for the node)
Variable Description Group Application Library File Package
$(BAFilePath) Absolute path of the 4ba file. X X X X  
$(BinaryName) Name of the binary node.   X X X  
$(BuildInputFileDirs) File directories. List of all files which are input files for a build rule. For example, main.4gl form.4fd test.per toto.4gl.   X X    
$(BuildInputFileNames) File names.   X X    
$(BuildInputFilePaths) Absolute file paths.   X X    
$(BuildOutputBaseNames) Base names. List of all files which are output files for a build rule. For example, main.42m form.42f test.42f toto.42m   X X    
$(BuildOutputFileNames) File names.   X X    
$(BuildOutputFilePaths) Absolute file paths.   X X    
$(CommandLineArgs) Command line arguments.   X      
$(CompilerOptions) Compilation flags defined in the user interface. X X X X  
$(Dependencies) List of link output files (link results) of all dependencies binary nodes. For example, your Application depends on 2 libraries, lib1 and lib2. The lib1 link rule creates the $(TargetDir)/lib1.so output file, and the lib2 link rule creates the $(TargetDir)/lib2.so output file. The Application Dependencies is a list of these paths: {$(TargetDir)//lib1.so $(TargetDir)//lib2.so}   X X    
$(DistDir) Value of the Distribution directory property.         X
$(ExecutableName) Executable name.   X      
$(ExternalDependencies) Value of the node property External dependencies.
Note: For Java™, C, and other languages, this property will contain the full path for external dependencies as FGLLDPATH is not used.
  X X    
$(GSTDIR) Genero Studio installation directory path. X X X X X
$(GSTSETUPDIR) Application Generator template directory path. X X X X  
$(Implicit) FGL argument -implicit=none       X  
$(InputBaseName) Input file base name, without extension.       X  
$(InputDir) Absolute directory of the input file.       X  
$(InputExtension) Input file extension.       X  
$(InputMimeType) Input file MIME type.       X  
$(InputName) Input file name, with extension.       X  
$(InputPath) Absolute path of the input file.       X  
$(IntermediateFilePaths) List of intermediate file paths.   X X    
$(JavaSourceDir) Absolute path of the Java source directory (packages root).     X    
$(JavaSourcePaths) Java source path (JavaSourceDir of dependencies).     X    
$(Language) Value of the Language property. X X X X  
$(LinkerOptions) Value of the node property LinkerOptions   X X X  
$(LinkOutputFileBaseNames) Base file names. List of all files which are output files for a link rule. For example, Application.42r   X X    
$(LinkOutputFileNames) File names. List of all files which are output files for a link rule. For example, Application.42r   X X    
$(LinkOutputFilePaths) Absolute file paths   X X    
$(PackageName) Value of the PackageName property.         X
$(ProjectDir) The directory where the 4pw file is located, or the operating system temporary directory if the project has never been saved. X X X X  
$(RelativeDir) A list of directory names, corresponding to the path difference between the source directory and the current directory. For example, the source directory is $(ProjectDir)/src, and the file path is $(ProjectDir)/src/com/d1/Account.java. The relative directory would be the string list {com d1}.
To use, you typically join with a separator:
  • For paths that use the backslash:
    $(RelativeDir|/)
  • For a java package using a period:
    $(RelativeDir|.)
  X X    
$(TargetDir) Target directory of the compiled files. X X X X  
$(TargetPaths) List of target directories of all dependencies. X X X X  
$(XCFFilePath) Path of the XCF file found for the application.   X X    

List Expansion

For all variables that contain a list of files, for example $(BuildInputFiles), special syntax is used to expand the list.

To get a list with a specific file extension, use a colon:
$(variableName:.extension)

For example, $(BuildInputFiles:.4gl) returns all files with a 4gl extension in the $(BuildInputFiles) list, separated by a space.

To get a list with a specific separator, use the pipe symbol:
$(variableName|separator)   

For example, $(BuildInputFiles|#) returns all the files in the $(BuildInputFiles) list, separated by a #.