Error Reference
Categories
1001 - 1099 : General Parsing Errors
As string was expected at the location shown, but a string start token (" or ') was not encountered.
Example Config:
Alias( name ) ; The name should be quoted
{
}
Example Output:
c:\Test\fbuild.bff(1):(8) FASTBuild Error #1001 - Alias() - Missing string start token " or '.
Alias( name )
^
\--here
The terminating token for a construct (e.g. a String, Array or Struct) was not found.
Example Config:
.String = 'Unterminated
Example Output:
C:\test\fbuild.bff(1,11): FASTBuild Error #1002 - Matching closing token ' not found.
.String = 'Unterminated
^
\--here
A Function header was provided an empty string as an argument, when an empty string is not supported.
Example Config:
Alias( "" ) ; Alias argument requires a non-empty string
{
}
Example Output:
c:\Test\fbuild.bff(1):(8) FASTBuild Error #1003 - Alias() - Empty string not allowed in Function header.
Alias( "" )
^
\--here
A property was defined as a string with an empty value in a context where this is not supported.
Example Config:
Library
{
.LibrarianOutput = "" ; This should be a valid path
}
Example Output:
c:\Test\fbuild.bff(1):(1) FASTBuild Error #1004 - Library() - Empty string not allowed for property '%s'.
Library
^
\--here
A Function references a previously defined node, but that node is of a type that cannot be sensibly handled in
the context of said Function. For example, an Executable can link previously defined libraries, but not Unity nodes.
Example Config:
Unity( "MyUnity" )
{
.UnityInputPath = "Code\"
.UnityOutputPath = "Tmp\"
}
Executable( "MyExe" )
{
.Libraries = "MyUnity" ; Can't link to unity generated files
.Linker = "link.exe"
.LinkerOptions = "%1 %2"
.LinkerOutput = "Tmp\my.exe"
}
Example Output:
c:\Test\fbuild.bff(6):(1) FASTBuild Error #1005 - Executable() - Unsupported node type in 'Libraries'.
(Node: 'MyUnity', Type: 'Unity')
Executable( "MyExe" )
^
\--here
A target was configured, but no inputs (or rules to find inputs) were provided. This Function can therefore
never result in any useful build output.
Example Config:
Library( "lib" )
{
.Compiler = "cl.exe"
.CompilerOutputPath = "Tmp\"
.CompilerOptions = "%1 %2"
.Librarian = "lib.exe"
.LibrarianOutput = "Tmp\"
.LibrarianOptions = "%1 %2"
; No inputs are specified for this library
}
Example Output:
c:\Test\fbuild.bff(1):(1) FASTBuild Error #1006 - Library() - Nothing defined to be built.
Library( "lib" )
^
\--here
A variable was expected, but some other symbol was encountered.
Example Config:
Using( "String" )
Example Output:
c:\test\fbuild.bff(1):(8) FASTBuild Error #1007 - Using() - Expected a variable at this location.
Using( "String" )
^
\--here
A variable of a particular type was expected, but a variable of some other type was encountered.
Example Config:
.String = "String"
Using( .String )
Example Output:
c:\test\fbuild.bff(2):(8) FASTBuild Error #1008 - Using() - Expected a variable of type 'Struct', but got 'String'.
Using( .String )
^
\--here
A variable which has not been defined was referenced inside another variable assignment or concatenation.
Example Config:
.Var = "$OtherVar$"
Example Output:
c:\Test\fbuild.bff(1):(10) FASTBuild Error #1009 - Unknown variable 'OtherVar'.
.Var = "$OtherVar$"
^
\--here
A high level construct (e.g. Function, Variable Assignment or Comment) was expected at the location shown,
but instead an unknown construct was encountered.
Example Config:
%
Example Output:
c:\Test\fbuild.bff(1):(1) FASTBuild Error #1010 - Unknown construct.
% ; There is no valid token that starts with a %
^
\--here
A variable modification operator was used without specifying the variable to append to. This is supported, provided the
destination variable was previously referenced.
Example Config:
+ "String" ; No variable to assign to
.MyVar = "hello"
+ "String" ; The destination variable can be inferred
Example Output:
c:\Test\fbuild.bff(1):(7) FASTBuild Error #1011 - Unnamed modification must follow a variable
assignment in the same scope.
+ "String"
^
\--here
While processing a construct, the end of the file was encountered. The construct is therefore incomplete and
cannot be understood.
Example Config:
.MyVar
Example Output:
c:\Test\fbuild.bff(1):(7) FASTBuild Error #1012 - Unexpected end of file.
.MyVar
^
\--here
Following a variable declaration character (.) an unsupported or unexpected character was encountered. Valid characters
for variable names are A-Z, a-z and 0-9.
Example Config:
.#MyVar
Example Output:
c:\Test\fbuild.bff(1):(2) FASTBuild Error #1013 - Unexpected character '#' in variable name.
.#MyVar
^
\--here
A variable with a name greater than 64 characters was encountered. 64 characters is imposed as a sanity check limit
for variable names.
Example Config:
.MyVarWhoseNameIsFarTooLongAndBecauseOfThisWillCauseFASTBuildToOutputAnError = "value"
Example Output:
c:\Test\fbuild.bff(1):(77) FASTBuild Error #1014 - Variable name is too long. (Length: 76, MaxLength: 64)
.MyVarWhoseNameIsFarTooLongAndBecauseOfThisWillCauseFASTBuildToOutputAnError = "value"
^
\--here
A function style token was encountered, but the name does not correspond to any supported function.
Example Config:
InvalidFunction()
{
}
Example Output:
c:\Test\fbuild.bff(1):(1) FASTBuild Error #1015 - Unknown Function.
InvalidFunction()
^
\--here
Following the declaration of a variable, and unexpected or unsupported character was found where an operator was expected.
Example Config:
.MyVarA = 10
.MyVarB. = 20
Example Output:
c:\Test\fbuild.bff(2):(8) FASTBuild Error #1016 - Unexpected character '.' following variable name.
(Expected operator)
.MyVarB. = 20
^
\--here
At the location of an expected variable value, an unexpected character was encountered. See the
Synax Guide
for details of valid variable types and their syntax.
Example Config:
.Var = whatisthis ; if this is a string, it should be quoted
Example Output:
c:\test\fbuild.bff(1):(8) FASTBuild Error #1017 - Unexpected character 'w' in variable value.
.Var = whatisthis ; if this is a string, it should be quoted
^
\--here
While parsing an integer variable declaration, an error was encountered because the integer is malformed or too large to
be stored as a 32-bit signed value.
Example Config:
.MyInt = 123456789123456789
Example Output:
c:\Test\fbuild.bff(1):(10) FASTBuild Error #1018 - Integer value could not be parsed.
.MyInt = 123456789123456789
^
\--here
A Function which can only be invoked once per configuration was encountered two or more times.
Example Config:
Settings
{
.CachePath ='c:\.cache'
}
Settings
{
.CachePath ='d:\.cache'
}
Example Output:
c:\Test\fbuild.bff(5):(1) FASTBuild Error #1020 - Settings() - Function can only be invoked once.
Settings
^
\--here
An attempt to invoke a Function with a header was made, where the Function does not accept a header.
Example Config:
Settings( "bad" )
{
}
Example Output:
c:\Test\fbuild.bff(1):(9) FASTBuild Error #1021 - Settings() - Unexpected Function header.
Settings( "bad" )
^
\--here
While parsing a function header, the closing ')' could not be found to terminate the header.
Example Config:
Alias( "name"
{
}
Example Output:
c:\Test\fbuild.bff(1):(6) FASTBuild Error #1022 - Alias() - Missing Function header close token ')'.
Alias( "name"
^
\--here
An attempt was made to invoke a Function without a header, where the given Function requires one.
Example Config:
Alias
{
.Targets = { "a", "b" }
}
Example Output:
c:\Test\fbuild.bff(2):(1) FASTBuild Error #1023 - Alias() - Function requires a header.
{
^
\--here
An attempt was made to invoke a Function without a body, where the Function requires one.
Example Config:
Alias( "name" )
Example Output:
c:\Test\fbuild.bff(1):(1) FASTBuild Error #1024 - Alias() - Function requires a body.
Alias( "name" )
^
\--here
While parsing a Function body, the closing '}' token could not be found.
Example Config:
Alias( "name" )
{
Example Output:
c:\Test\fbuild.bff(2):(1) FASTBuild Error #1025 - Alias() - Missing scope close token '}'.
{
^
\--here
An attempt was made to modify a variable that was not previously defined.
Example Config:
.DoesNotExist + "string"
Example Output:
c:\Test\fbuild.bff(1):(15) FASTBuild Error #1026 - Variable '.DoesNotExist' not found for modification.
.DoesNotExist + "string"
^
\--here
An attempt was made to modify a variable with a differing type, where such an operation is not supported.
Example Config:
.MyVar = "string";
.MyVar + 7
Example Output:
c:\Test\fbuild.bff(2):(8) FASTBuild Error #1027 - Cannot use <Int> to modify <Any> for Variable '.MyVar'.
.MyVar + 7
^
\--here
A variable substitution was begun, but not properly terminated.
Example Config:
.String1 = "string"
.String2 = "$String1" ; Missing the closing $
Example Output:
c:\Test\fbuild.bff(2):(13) FASTBuild Error #1028 - Cannot find '$' to end variable substitution.
.String2 = "$String1"
^
\--here
A string substitution was attempted with a non-string variable.
Example Config:
.MyBool = true
.MyString = "$MyBool$"
Example Output:
c:\Test\fbuild.bff(2):(15) FASTBuild Error #1029 - Variable for substitution 'MyBool' is not a string (T
ype: ).
.MyString = "$MyBool$"
^
\--here
An unkown directive was encountered during parsing.
Example Config:
#zzz
Example Output:
c:\test\fbuild.bff(1):(2) FASTBuild Error #1030 - Unknown directive 'zzz'.
#zzz
^
\--here
Following a recognized directive, an unexpected character was encountered. Expected characters vary depending on the directive.
Example Config:
#include(
Example Output:
c:\test\fbuild.bff(1):(9) FASTBuild Error #1031 - Unknown char '(' following 'include' directive.
(Expected '"').
#include(
^
\--here
The specified include file could not be opened.
Example Config:
#include "missingfile.bff"
Example Output:
c:\test\fbuild.bff(1):(11) FASTBuild Error #1032 - Unable to open include 'missingfile.bff'.
#include "missingfile.bff"
^
\--here
A read error occurred when reading the included file.
Example Config:
#include "errorfile.bff"
Example Output:
c:\test\fbuild.bff(1):(11) FASTBuild Error #1033 - Error reading include 'errorfile.bff' (Error: 4).
#include "errorfile.bff"
^
\--here
An operation was attempted between two types that cannot support the operation.
Example Config:
.Var1 = 123
.Var2 = "String"
.Var2 + .Var1 // incompatible types
Example Output:
c:\test\fbuild.bff(3):(9) FASTBuild Error #1034 - Operation not supported: 'String' + 'Int'.
.Var2 + .Var1 // incompatible types
^
\--here
The maximum depth was reached during BFF parsing. This can be caused by a recursive include, or by an excessively complex BFF configuration.
Example Config:
#include "fbuild.bff" // include self
Example Output:
c:\test\fbuild.bff(1):(10) FASTBuild Error #1035 - Excessive depth complexity when parsing BFFs.
Check for resursive includes or simplify config.
#include "fbuild.bff"
^
\--here
Every #endif directive must be preceeded by an accompanying #if directive.
Example Config:
#if __WINDOWS__
#endif
#endif
Example Output:
C:\Test\fbuild.bff(3,2): FASTBuild Error #1037 - #endif without matching #if.
#endif
^
\--here
A token can only be defined once. If re-definition is required, the token must first be undefined using #undef.
Example Config:
#define THING
#define THING
Example Output:
C:\Test\fbuild.bff(2,9): FASTBuild Error #1038 - Overwriting already defined token in #define directive.
#define THING
^
\--here
A token can only be undefined if it was previously defined.
Example Config:
#undef THING_WHICH_WAS_NOT_DEFINED
Example Output:
C:\Test\fbuild.bff(1,8): FASTBuild Error #1039 - Unknown token in #undef directive.
#undef THING_WHICH_WAS_NOT_DEFINED
^
\--here
A token can only be undefined if it was previously defined.
Example Config:
#undef __WINDOWS__
Example Output:
C:\Test\fbuild.bff(1,8): FASTBuild Error #1040 - #undef of built-in token not allowed.
#undef __WINDOWS__
^
\--here
A #else token can only be used after an #if token.
Example Config:
#else
Example Output:
C:\Test\fbuild.bff(1,2): FASTBuild Error #1041 - #else without matching #if.
#else
^
\--here
An unknown operator was found while parsing an #if directive.
Example Config:
#if bad(X)
Example Output:
C:\Test\fbuild.bff(1,5): FASTBuild Error #1042 - Unknown operator 'bad'.
#if bad(X)
^
\--here
The property of a Function was of a type other than that which is expected by the Function.
Example Config:
Library( "lib" )
{
.LibrarianOutput = true
}
Example Output:
c:\Test\fbuild.bff(1):(1) FASTBuild Error #1050 - Library() - Property '.LibrarianOutput' must be of type
<String> (found <Bool>).
Library( "lib" )
^
\--here
An integer property of a Function was set out of range.
Example Config:
Unity( "name" )
{
.UnityInputPath = "Code/"
.UnityOutputPath = "Tmp/"
.UnityNumFiles = 99999999
}
Example Output:
c:\Test\fbuild.bff(1):(1) FASTBuild Error #1054 - Unity() - Integer 'UnityNumFiles' must be in range 1 to 999.
Unity( "name" )
^
\--here
An attempt was made to assign a value to a frozen variable. Variables are frozen when
they are being iterated with ForEach.
Example Config:
.Array = { 'a', 'b', 'c' }
ForEach( .Item in .Array )
{
^Array + 'loop variables are frozen'
}
Example Output:
C:\Test\fbuild.bff(4,3): FASTBuild Error #1060 - Can't modify frozen variable '.Array'
^Array + 'loop variables are frozen'
^
\--here
1100 - 1199 : Function Parameter Errors
An attempt was made to define a target that was already defined.
Example Config:
Unity( "unity1" )
{
.UnityInputPath = "Code\"
.UnityOutputPath = "Tmp\"
}
Alias( "unity1" )
{
.Targets = "unity1"
}
Example Output:
c:\Test\fbuild.bff(6):(1) FASTBuild Error #1100 - Alias() - Target 'unity1' already defined.
Alias( "unity1" )
^
\--here
An attempt was made to invoke a Function, but a required property was not set.
Example Config:
Alias( "name" )
{
}
Example Output:
c:\Test\fbuild.bff(1):(1) FASTBuild Error #1101 - Alias() - Missing required property 'Targets'.
Alias( "name" )
^
\--here
The property of a Function was not of the expected type.
Example Config:
.Compiler = "cl.exe"
.CompilerOptions = "%1 %2"
.CompilerOutputPath = "Tmp\"
.Librarian = "lib.exe"
.LibrarianOptions = "%1 %2"
Library( "lib1" )
{
.CompilerInputPath = "Code\"
.LibrarianOutput = "lib1.lib"
}
Library( "lib2" )
{
.LibrarianOutput = "lib2.lib"
.CompilerInputUnity = "lib1"
}
Example Output:
c:\Test\fbuild.bff(11):(1) FASTBuild Error #1102 - Library() - 'CompilerInputUnity' ('lib1') is of
unexpected type 'Alias'. Expected 'Unity'.
Library( "lib2" )
^
\--here
A Function parameter which can only reference a node which results in a file output references a non-file output node.
Example Config:
Unity( "Test" )
{
.UnityInputPath = "Code\"
.UnityOutputPath = "Tmp\"
}
Test( "RunTest" )
{
.TestOutput = "Tmp\"
.TestExecutable = "Test"
}
Example Output:
c:\Test\fbuild.bff(6):(1) FASTBuild Error #1103 - Test() - 'TestExecutable' ('Test') is a 'Unity', which
does not describe a file.
Test( "RunTest" )
^
\--here
A Function references a node which has not been defined.
Example Config:
Test( "RunTest" )
{
.TestOutput = "Tmp\"
.TestExecutable = "Test.exe"
}
Example Output:
c:\Test\fbuild.bff(1):(1) FASTBuild Error #1104 - Test() - 'TestExecutable' ('Test.exe') is not defined.
Test( "RunTest" )
^
\--here
A path was provided for a property where a file is expected.
Example Config:
Copy
{
.Source = "Code\" // This should be a file
.Dest = "tmp\"
}
Example Output:
c:\test\fbuild.bff(1):(1) FASTBuild Error #1105 - Copy() - Path not allowed for '.Source' ('c:\test\Code\').
Copy
^
\--here
A token that is required for FASTBuild to function correctly was not provided.
Example Config:
ObjectList( 'objlist' )
{
.Compiler = 'cl.exe'
.CompilerOutputPath= 'out/'
.CompilerOptions = '/c %1' // NOTE missing %2
}
Example Output:
c:\Test\fbuild.bff(1,1): FASTBuild Error #1106 - ObjectList() - Property '.CompilerOptions' is missing required token '%2'.
ObjectList( 'objlist' )
^
\--here
1200 - 1299 : ForEach Specific Errors
The ForEach Function requires a specific syntax "ForEach( .X in .Y ) which has not been adhered to.
Example Config:
ForEach( "bad" )
{
}
Example Output:
c:\Test\fbuild.bff(1):(10) FASTBuild Error #1200 - ForEach() - Expected a variable at this location.
ForEach( "bad" )
^
\--here
The ForEach Function requires a specific syntax "ForEach( .X in .Y ) which has not been adhered to.
Example Config:
ForEach( .I )
{
}
c:\Test\fbuild.bff(1):(13) FASTBuild Error #1201 - ForEach() - Missing 'in' at this location.
ForEach( .I )
^
\--here
Example Output:
The ForEach Function requires a specific syntax "ForEach( .X in .Y ) which has not been adhered to.
Example Config:
ForEach( .I in )
{
}
Example Output:
c:\Test\fbuild.bff(1):(16) FASTBuild Error #1202 - ForEach() - Expected a variable following 'in'.
ForEach( .I in )
^
\--here
A ForEach loop has been defined to loop through several Array properties, but not all Arrays are of the same size.
Example Config:
.Configs = { "debug", "release", "master" }
.Options = { "a", "b" }
ForEach( .Config in .Configs,
.Option in .Options )
{
}
Example Output:
c:\Test\fbuild.bff(4):(21) FASTBuild Error #1204 - ForEach() - Variable '.Options' contains 2 elements,
but loop is for 3 elements.
.Option in .Options )
^
\--here
1300 - 1399 : Library Specific Errors
An attempt was made to use Precompiled headers for a Library, but not all required properties were defined.
Example Config:
Library( "lib" )
{
.Compiler = "cl.exe"
.CompilerInputPath = "Code\"
.CompilerOutputPath = "Tmp\"
.CompilerOptions = "%1 %2"
.Librarian = "lib.exe"
.LibrarianOutput = "Tmp\"
.LibrarianOptions = "%1 %2"
.PCHInputFile = "PrecompiledHeader.cpp"
}
Example Output:
c:\Test\fbuild.bff(1):(1) FASTBuild Error #1300 - Library() - Precompiled Header use requires
'PCHInputFile', 'PCHOutputFile' and 'PCHOptions' parameters.
Library( "lib" )
^
\--here
A Library using Precompiled Headers was defined, but the Precompiled Header output conflicts with an existing target.
Example Config:
.Configs = { "debug", "release" }
ForEach( .Config in .Configs )
{
Library( "lib-$Config$" )
{
.Compiler = "cl.exe"
.CompilerInputPath = "Code\"
.CompilerOutputPath = "Tmp\"
.CompilerOptions = "%1 %2"
.Librarian = "lib.exe"
.LibrarianOutput = "Tmp\"
.LibrarianOptions = "%1 %2"
.PCHInputFile = "PrecompiledHeader.cpp"
.PCHOutputFile = "ProcompiledHeader.pch"
.PCHOptions = "%1 %2"
}
}
Example Output:
c:\Test\fbuild.bff(4):(3) FASTBuild Error #1301 - Library() - Precompiled Header target 'ProcompiledHead
er.pch' has already been defined.
Library( "lib-$Config$" )
^
\--here
A Library using Precompiled Headers was missing a required option. Compilation will not work correctly.
Example Config:
.Compiler = "cl.exe"
.Librarian = "lib.exe"
Library( "test" )
{
.PCHInputFile = "PrecompiledHeader.cpp"
.PCHOutputFile = "tmp\PrecompiledHeader.pch"
.PCHOptions = '%1 /Fo"%3" /Yc"PrecompiledHeader.h" /Fp"%2" /c'
.CompilerOutputPath = "tmp/"
.CompilerOptions = "%1 /Fo%2" ; Missing options to use the PCH
.LibrarianOutput = "test.lib"
.LibrarianOptions = "/OUT:%2 %2"
}
Example Output:
c:\test\fbuild.bff(3):(1) FASTBuild Error #1302 - Library() - Missing Precompiled Header option '/Yu'
in 'CompilerOptions'.
Library( "test" )
^
\--here
An option to create Precompiled Headers was specified on a non-precompiled header file. Compilation will not work correctly.
To use Precompiled Headers in a library, use the various .PCH* options.
Example Config:
.Compiler = "cl.exe"
.Librarian = "lib.exe"
Library( "test" )
{
.CompilerOutputPath = "tmp/"
.CompilerOptions = "%1 /Fo%2 /Yc" ; Not valid to use /Yc here
.LibrarianOutput = "test.lib"
.LibrarianOptions = "/OUT:%2 %2"
}
Example Output:
c:\test\fbuild.bff(3):(1) FASTBuild Error #1303 - Library() - Precompiled Header option '/Yc' in
'CompilerOptions' invalid. Only allowed on Precompiled Header.
Library( "test" )
^
\--here
1400 - 1499 : Copy Specific Errors
A Copy() target was declared with multiple .Source files, but .Dest was not a path. If the .Dest is a file, then only one
.Source can be specified. If .Dest is intended to be a path, it requires a trailing slash to disambiguate.
Example Config:
Copy( 'MissingTrailingSlash' )
{
.Source = {
'Files/a.txt'
'Files/b.txt'
}
.Dest = 'Folder/Folder' // NOTE: Missing trailing slash
}
Example Output:
c:\test\fbuild.bff.bff(1,1): FASTBuild Error #1400 - Copy() - 'Dest' with multiple 'Source' files should be a path. Missing trailing '/'?
Copy( 'MissingTrailingSlash' )
^
\--here
1500 - 1599 : Compiler Specific Errors
FASTBuild will try to determine the type of compiler by default, using the filename of the specified executable.
If the compiler type cannot be determined this way, Error #1500 will be emitted. If necessary, you can manually
specify the compiler type using the .CompilerFamily option.
Example Config:
Compiler( 'gcc' )
{
.Executable = 'gccc'
}
Example Output:
c:\test\fbuild.bff(1,1): FASTBuild Error #1500 - Compiler() - Compiler detection failed. Unrecognized executable 'C:\Test\gccc'.
Compiler( 'gcc' )
^
\--here
When the .CompilerFamily property is set to an unsupported value, Error #1501 will be emitted. For valid values, consult the
Compiler() documentation.
Example Config:
Compiler( 'compiler' )
{
.Executable = 'compiler.exe'
.CompilerFamily = 'xyz'
}
Example Output:
c:\test\fbuild.bff(1,1): FASTBuild Error #1501 - Compiler() - .CompilerFamily 'xyz' is unrecognized.
Compiler( 'compiler' )
^
\--here