Directive

# ＃If...＃EndIf

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

## Description

Used to control conditional compilation.

## Usage

``` xojo
#If TargetBoolean Then
  ' Target-specific code
#ElseIf TargetBoolean Then
  ' Other Target-specific code
#Else
  ' Other Target-specific code
#EndIf
```

**or**

``` xojo
#If TargetBoolean Then Target-specific code [ #Else Target-specific code ] [ #EndIf ]
```

| Part          | Type                                                                                                   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|---------------|--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| TargetBoolean | `Boolean</api/data_types/boolean>` constant or `Boolean</api/data_types/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 following constants are used: `DebugBuild</api/compiler_directives/debugbuild>`, `XojoVersion</api/language/xojoversion>`, `Target32Bit</api/compiler_directives/target32bit>`, `Target64Bit</api/compiler_directives/target64bit>`, `TargetAndroid</api/compiler_directives/targetandroid>`, `TargetARM</api/compiler_directives/targetarm>`, `TargetBigEndian</api/compiler_directives/targetbigendian>`, `TargetDesktop</api/compiler_directives/targetdesktop>`, `TargetConsole</api/compiler_directives/targetconsole>`, `TargetiOS</api/compiler_directives/targetios>`, `TargetLinux</api/compiler_directives/targetlinux>`, `TargetLittleEndian</api/compiler_directives/targetlittleendian>`, `TargetMacOS</api/compiler_directives/targetmacos>`, `TargetMachO</api/compiler_directives/targetmacho>`, `TargetMobile</api/compiler_directives/targetmobile>`, `TargetMobileDevice</api/compiler_directives/targetmobiledevice>`, `TargetMobileSimulator</api/compiler_directives/targetmobilesimulator>`, `TargetRemoteDebugger</api/compiler_directives/targetremotedebugger>`, `TargetWindows</api/compiler_directives/targetwindows>`, `TargetWeb</api/compiler_directives/targetweb>`, `TargetX86</api/compiler_directives/targetx86>`, `TargetXojoCloud</api/compiler_directives/targetxojocloud>` |

## Notes

\#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:

``` xojo
#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</api/data_types/boolean>` constant or a `Boolean</api/data_types/boolean>` constant expression that evaluates to `True</api/language/true>` or `False</api/language/false>`. For example, you can use `XojoVersion</api/language/xojoversion>` or `XojoVersionString</api/language/xojoversionstring>` in a boolean expression to check the version currently being used.

``` xojo
#If XojoVersionString = "2025r2" Then
  ' Code using features new to this version
#EndIf
```

## Sample code

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

``` xojo
Var separator As String
#If TargetWindows Then
  separator = "\" 
#ElseIf TargetMacOS Then
  separator = "/" 
#ElseIf TargetLinux Then
  separator = "/"
#EndIf
```

## Compatibility

|                       |     |
|-----------------------|-----|
| **Project Types**     | All |
| **Operating Systems** | All |

<div class="seealso">

`Declare</api/language/declare>` statement, `AppleEvent</api/macos/appleevent>` class; `DebugBuild</api/compiler_directives/debugbuild>`, `Target32Bit</api/compiler_directives/target32bit>`, `Target64Bit</api/compiler_directives/target64bit>`, `TargetAndroid</api/compiler_directives/targetandroid>`, `TargetARM</api/compiler_directives/targetarm>`, `TargetBigEndian</api/compiler_directives/targetbigendian>`, `TargetLittleEndian</api/compiler_directives/targetlittleendian>`, `TargetDesktop</api/compiler_directives/targetdesktop>`, `TargetConsole</api/compiler_directives/targetconsole>`, `TargetiOS</api/compiler_directives/targetios>`, `TargetLinux</api/compiler_directives/targetlinux>`, `TargetMachO</api/compiler_directives/targetmacho>`, `TargetMacOS</api/compiler_directives/targetmacos>`, `TargetMobile</api/compiler_directives/targetmobile>` `TargetMobileDevice</api/compiler_directives/targetmobiledevice>`, `TargetMobileSimulator</api/compiler_directives/targetmobiledevice>`, `TargetRemoteDebugger</api/compiler_directives/targetremotedebugger>`, `TargetX86</api/compiler_directives/targetx86>`, `TargetWeb</api/compiler_directives/targetweb>`, `TargetWindows</api/compiler_directives/targetwindows>`, `TargetXojoCloud</api/compiler_directives/targetxojocloud>`, `XojoVersion</api/language/xojoversion>`, `XojoVersionString</api/language/xojoversionstring>` constants.

</div>
