---
title: "define(_:_:)"
framework: packagedescription
role: symbol
role_heading: Type Method
path: "packagedescription/swiftsetting/define(_:_:)"
---

# define(_:_:)

Defines a compilation condition.

## Declaration

```swift
static func define(_ name: String, _ condition: BuildSettingCondition? = nil) -> SwiftSetting
```

## Parameters

- `name`: The name of the macro.
- `condition`: A condition that restricts the application of the build setting.

## Discussion

Discussion Use compilation conditions to only compile statements if a certain condition is true. For example, the Swift compiler will only compile the statements inside the #if block when ENABLE_SOMETHING is defined: #if ENABLE_SOMETHING    ... #endif Unlike macros in C/C++, compilation conditions don’t have an associated value. note: First available in PackageDescription 5.0.

## See Also

### Configuring Swift Settings

- [unsafeFlags(_:_:)](packagedescription/swiftsetting/unsafeflags(_:_:).md)
- [strictMemorySafety(_:)](packagedescription/swiftsetting/strictmemorysafety(_:).md)
- [swiftLanguageMode(_:_:)](packagedescription/swiftsetting/swiftlanguagemode(_:_:).md)
- [defaultIsolation(_:_:)](packagedescription/swiftsetting/defaultisolation(_:_:).md)
- [enableExperimentalFeature(_:_:)](packagedescription/swiftsetting/enableexperimentalfeature(_:_:).md)
- [enableUpcomingFeature(_:_:)](packagedescription/swiftsetting/enableupcomingfeature(_:_:).md)
- [interoperabilityMode(_:_:)](packagedescription/swiftsetting/interoperabilitymode(_:_:).md)
- [SwiftSetting.InteroperabilityMode](packagedescription/swiftsetting/interoperabilitymode.md)
- [swiftLanguageVersion(_:_:)](packagedescription/swiftsetting/swiftlanguageversion(_:_:).md)
