# Error Reference

## Categories

- 1000 - 1099 General Parsing Errors
- 1100 - 1199 Function Parameter Errors
- 1200 - 1299 ForEach Specific Errors
- 1300 - 1399 Library Specific Errors

## 1001 - 1099 : General Parsing Errors

1001 - Missing string start token " or '.
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
1002 - Matching closing token %c not found.
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
1003 - Empty string not allowed in Function header.
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
1004 - Empty string not allowed for property '%s'.
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
1005 - Unsupported node type in '%s'. (Node: '%s', Type: '%s')
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
1006 - Nothing defined to be built.
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
1007 - Expected a variable at this location.
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
1008 - Expected a variable of type '%s', but got '%s'.
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
1009 - Unknown variable.
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
1010 - Unknown construct.
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
1011 - Unnamed modification must follow a variable assignment in the same scope.
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
1012 - Unexpected end of file.
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
1013 - Unexpected character '%c' in variable name.
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
1014 - Variable name is too long. (Length: %u, MaxLength: %u)
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
1015 - Unknown Function.
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
1016 - Unexpected character '%c' following variable name.
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
1017 - Unexpected character '%c' in variable value.
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
1018 - Integer value could not be parsed.
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
1020 - Function can only be invoked once.
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
1021 - Unexpected Function header.
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
1022 - Missing Function header close token '%c'.
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
1023 - Function requires a header.
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
1024 - Function requires a body.
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
1025 - Missing scope close token '}'.
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
1026 - Variable '%s' not found for modification.
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
1027 - Cannot use <%s> to modify <%s> for Variable '%s'.
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
1028 - Cannot find '$' to end variable substitution
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
1029 - Variable for substitution '%s' is not a string (Type: <%s>).
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
1030 - Unknown directive '%s'.
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
1031 - Unknown char '%c' following '%s' directive. (Expected '%c').
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
1032 - Unable to open include '%s'.
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
1033 - Error reading include '%s' (Error: %u).
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
1034 - Operation not supported: '%s' %s '%s'.
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
1035 - Excessive depth complexity when parsing BFFs.
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
1037 - #endif without matching #if.
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
1038 - Overwriting already defined token in #define directive.
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
1039 - Unknown token in #undef directive.
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
1040 - #undef of built-in token not allowed.
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
1041 - #else without matching #if.
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
1050 - Property '%s' must be of type <%s> (found <%s>).
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
1054 - Integer '%s' must be in range %u to %u.
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
1060 - Can't modify frozen variable '%s'.
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

1100 - Target '%s' already defined.
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
1101 - Missing required property '%s'.
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
1102 - '%s' ('%s') is of unexpected type '%s'. Expected '%s'.
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
1103 - '%s' ('%s') is a '%s', which does not describe a file.
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
1104 - '%s' ('%s') is not defined.
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
1105 - Path not allowed for '%s' ('%s').
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
1106 - Property '%s' is missing required token '%s'.
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

1200 - Expected a variable at this location.
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
1201 - Missing 'in' at this location.
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:

1202 - Expected a variable following 'in'.
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
1204 - Variable '%s' contains %i elements, but loop is for %i elements.
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

1300 - Precompiled Header use requires 'PCHInputFile', 'PCHOutputFile' and 'PCHOptions' parameters.
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
1301 - Precompiled Header target '%s' has already been defined.
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
1302 - Missing Precompiled Header option '%s' in '%s'.
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
1303 - Precompiled Header option '%s' in '%s' invalid. Only allowed on Precompiled Header.
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