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.
.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