Difference between revisions of "Variable expansion"

From Code::Blocks
Line 114: Line 114:
 
<code>$(RANDOM)</code>
 
<code>$(RANDOM)</code>
 
:A 16bit positive random number (0-65535)
 
:A 16bit positive random number (0-65535)
 +
 +
=== Conditional Evaluation ===
 +
 +
<code>$if(condition){true clause}{false clause}</code>
 +
:Conditional evaluation will resolve to its <tt>true clause</tt> if
 +
::<tt>condition</tt> is a non-empty character sequence
 +
::<tt>condition</tt> is a non-empty variable that does not resolve to <tt>0</tt> or <tt>false</tt>
 +
::<tt>condition</tt> is a variable that evaluates to <tt>true</tt> (implicit by previous condition)
 +
:Conditional evaluation will resolve to its <tt>false clause</tt> if
 +
::<tt>condition</tt> is empty
 +
::<tt>condition</tt> is <tt>0</tt> or <tt>false</tt>
 +
::<tt>condition</tt> is a variable that is empty or evaluates to <tt>0</tt> or <tt>false</tt>
 +
 +
Please do note that neither the variable syntax variants <tt>%if(...)</tt> nor <tt>$(if)(...)</tt> are supported for this construct.

Revision as of 12:53, 27 November 2006


Syntax

Code::Blocks treats the following functionally identical character sequences inside pre-build, post-build, or build steps as variables:

  • $VARIABLE
  • $(VARIABLE)
  • ${VARIABLE}
  • %VARIABLE%

Variable names must consist of alphanumeric characters and are not case-sensitive. Variables starting with a single hash sign (#) are interpreted as global user variables. The names listed below are interpreted as builtin types.

Variables which are neither global user variables nor builtin types are replaced with a value provided in the project file, or with an environment variable if the latter should fail.

Per-target definitions have precedence over per-project definitions.

List of available builtins

Files and directories

$(PROJECT_FILENAME), $(PROJECT_FILE), $(PROJECTFILE)

The filename of the currently compiling project.

$(PROJECT_NAME)

The name of the currently compiling project.

$(PROJECT_DIR), $(PROJECTDIR), $(PROJECT_DIRECTORY)

The common top-level directory of the currently compiling project.

$(ACTIVE_EDITOR_FILENAME)

The filename of the file opened in the currently active editor.

$(ACTIVE_EDITOR_DIRNAME)

Currently active file's containing directory (relative to the common top level path)

$(ACTIVE_EDITOR_STEM)

Currently active file's base name (without extension).

$(ACTIVE_EDITOR_EXT)

Currently active file's extension.

$(ALL_PROJECT_FILES)

A string containing the names of all files in the current project.

$(MAKEFILE)

The filename of the makefile.

$(CODEBLOCKS), $(APP_PATH), $(APPPATH), $(APP-PATH)

The path to the currently running instance of Code::Blocks

$(DATAPATH), $(DATA_PATH), $(DATA-PATH)

The 'shared' directory of the currently running instance of Code::Blocks

$(PLUGINS)

The 'plugins' directory of the currently running instance of Code::Blocks

Build targets

$(FOOBAR_OUTPUT_FILE)

A specific target's output file.

$(FOOBAR_OUTPUT_DIR)

A specific target's output directory.

$(FOOBAR_OUTPUT_BASENAME)

A specific target's output file's base name (no path, no extension).

$(TARGET_OUTPUT_DIR)

The current target's output directory.

$(TARGET_NAME)

The current target's name.

$(TARGET_OUTPUT_FILE)

The current target's output file.

$(TARGET_OUTPUT_BASENAME)

The current target's output file's base name (no path, no extension).

Language and encoding

$(LANGUAGE)

The system language in human readable form.

$(ENCODING)

The character encoding in human readable form.

Time and date

$(TDAY)

Current date in the form YYYYMMDD (for example 20051228)

$(TODAY)

Current date in the form YYYY-MM-DD (for example 2005-12-28)

$(NOW)

Timestamp in the form YYYY-MM-DD-hh.mm (for example 2005-12-28-07.15)

$(NOW_L)

Timestamp in the form YYYY-MM-DD-hh.mm.ss (for example 2005-12-28-07.15.45)

$(WEEKDAY)

Human-readable day of the week (for example "Wednesday")

$(TDAY_UTC), $(TODAY_UTC), $(NOW_UTC), $(NOW_L_UTC), $(WEEKDAY_UTC)

These are identical to the preceding types, but are expressed relative to UTC.

Random values

$(COIN)

This variable tosses a virtual coin (once per invokation) and returns 0 or 1.

$(RANDOM)

A 16bit positive random number (0-65535)

Conditional Evaluation

$if(condition){true clause}{false clause}

Conditional evaluation will resolve to its true clause if
condition is a non-empty character sequence
condition is a non-empty variable that does not resolve to 0 or false
condition is a variable that evaluates to true (implicit by previous condition)
Conditional evaluation will resolve to its false clause if
condition is empty
condition is 0 or false
condition is a variable that is empty or evaluates to 0 or false

Please do note that neither the variable syntax variants %if(...) nor $(if)(...) are supported for this construct.