Used to control conditional compilation.
#If TargetBoolean [Then]
//Other OS-specific code
[#ElseIf TargetBoolean ]
//Other OS-specific code for this target platform
#If TargetBoolean Then OS-specific code
Constant or expression that evaluates to a boolean constant. Used to determine the operating system that will include the code that follows. The following constants are used: DebugBuild XojoVersion Target32Bit Target64Bit TargetARM TargetBigEndian TargetDesktop TargetConsole TargetiOS TargetLinux TargetLittleEndian TargetMacOS TargetMachO TargetMobileDevice TargetMobileSimulator TargetRemoteDebugger TargetWindows TargetWeb TargetX86 TargetXojoCloud
#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.
You can use conditional compilation to isolate platform-specific statements such as API calls, AppleEvent routines, or console application routines that are specific to Windows, macOS, 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 // Mac-specific code goes here #ElseIf TargetLinux Then // Linux-specific code goes here #ElseIf TargetXojoCloud Then // Xojo Cloud-specific code goes here #EndIf
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 = "2018r1" Then // Code using features new to this version #Endif
The following example assigns the file path separator character to a string based on the target platform:
Var separator As String #If TargetWindows Then separator = "\" #ElseIf TargetMacOS Then separator = "/" #ElseIf TargetLinux Then separator = "/" #Endif
All project types on all supported operating systems.
Declare statement, AppleEvent class; DebugBuild, Target32Bit, Target64Bit, TargetARM, TargetBigEndian, TargetLittleEndian, TargetDesktop, TargetConsole, TargetiOS, TargetLinux, TargetMachO, TargetMacOS, TargetMobileDevice, TargetMobileSimulator, TargetRemoteDebugger, TargetX86, TargetWeb, TargetWindows, TargetXojoCloud, XojoVersion, XojoVersionString constants.