From Xojo Documentation


Used to control conditional compilation.


#If TargetBoolean [Then] Changed 5.0
//OS specific code
//Other OS-specific code
[#ElseIf TargetBoolean Introduced 5.5]
//Other OS-specific code for this target platform


#If TargetBoolean Then OS-specific code

Part Type Description
TargetBoolean Boolean constant or Boolean constant expression. Constant or expression that evaluates to a boolean constant. Used to determine the operating system that will include the code that follows.

The DebugBuild, [XojoVersion]], TargetBigEndian, TargetDesktop, TargetLinux, TargetLittleEndian, TargetMacOS, TargetMachO, TargetWindows, TargetCocoa or TargetX86, TargetWeb, Target32Bit, Target64Bit, TargetXojoCloud constants are used.


#If statements can be written on one line if there are no #Else or #Elseif clauses. In this case, the Then keyword is required and the #endif is not part of the syntax.

Use conditional compilation to isolate platform-specific statements such as API calls, AppleEvent routines, or console application routines that are specific to Windows, Mac OS X, or Linux. The code following the #If statement is included only in the build for that operating system.

The optional #ElseIf clause enables you to use a template such as this for handling all cases:

#If TargetWindows Then
//Windows-specific code here
#ElseIf TargetMacOS
//OS X-specific code goes here
#ElseIf TargetLinux Then
//Linux-specific code goes here
#ElseIf TargetXojoCloud Then
// Xojo Cloud-specific code goes here

The TargetBoolean parameter must be either a Boolean constant or a Boolean constant expression that evaluates to True or False. For example, you can use XojoVersion or XojoVersionString in a boolean expression to check the version currently being used.

#If XojoVersionString = "2014r1" Then
// Code using features new to this version

Sample Code

The following example assigns the file path separator character to a string based on the target platform:

Dim separator As String
#If TargetWindows Then
separator = "\"
#ElseIf TargetMacOS Then
separator = "/"
#ElseIf TargetLinux Then
separator = "/"

See Also

Declare statement, AppleEvent class; DebugBuild, XojoVersion, XojoVersionString, TargetBigEndian, TargetLittleEndian, TargetCocoa, TargetDesktop, TargetLinux, TargetMachO, TargetMacOS, TargetWindows, TargetX86, TargetWeb, Target32Bit, Target64Bit, TargetXojoCloud constants.