---
title: BuildSettingCondition
framework: swift-package-manager
role: symbol
role_heading: Structure
path: swift-package-manager/documentation/packagedescription/buildsettingcondition
---

# BuildSettingCondition

A condition that limits the application of a build setting.

## Declaration

```swift
struct BuildSettingCondition
```

## Overview

Overview By default, build settings are applicable for all platforms and build configurations. Use the .when modifier to define a build setting for a specific condition. Invalid usage of .when emits an error during manifest parsing. For example, it’s invalid to specify a .when condition with both parameters as nil. The following example shows how to use build setting conditions with various APIs: ... .target(     name: "MyTool",     dependencies: ["Utility"],     cSettings: [         .headerSearchPath("path/relative/to/my/target"),         .define("DISABLE_SOMETHING", .when(platforms: [.iOS], configuration: .release)),     ],     swiftSettings: [         .define("ENABLE_SOMETHING", .when(configuration: .release)),     ],     linkerSettings: [         .linkLibrary("openssl", .when(platforms: [.linux])),     ] ),

## Topics

### Checking for a Build Condition

- [when(platforms:)](swift-package-manager/documentation/packagedescription/buildsettingcondition/when(platforms:).md)
- [when(configuration:)](swift-package-manager/documentation/packagedescription/buildsettingcondition/when(configuration:).md)
- [when(platforms:configuration:)](swift-package-manager/documentation/packagedescription/buildsettingcondition/when(platforms:configuration:)-475co.md)
- [when(platforms:configuration:traits:)](swift-package-manager/documentation/packagedescription/buildsettingcondition/when(platforms:configuration:traits:).md)
- [when(platforms:configuration:)](swift-package-manager/documentation/packagedescription/buildsettingcondition/when(platforms:configuration:)-2991l.md)

## Relationships

### Conforms To

- Swift.Sendable
- Swift.SendableMetatype

## See Also

### Configuring the Target

- [cSettings](swift-package-manager/documentation/packagedescription/target/csettings.md)
- [cxxSettings](swift-package-manager/documentation/packagedescription/target/cxxsettings.md)
- [swiftSettings](swift-package-manager/documentation/packagedescription/target/swiftsettings.md)
- [linkerSettings](swift-package-manager/documentation/packagedescription/target/linkersettings.md)
- [plugins](swift-package-manager/documentation/packagedescription/target/plugins.md)
- [BuildConfiguration](swift-package-manager/documentation/packagedescription/buildconfiguration.md)
- [CSetting](swift-package-manager/documentation/packagedescription/csetting.md)
- [CXXSetting](swift-package-manager/documentation/packagedescription/cxxsetting.md)
- [SwiftSetting](swift-package-manager/documentation/packagedescription/swiftsetting.md)
- [LinkerSetting](swift-package-manager/documentation/packagedescription/linkersetting.md)
- [Target.PluginUsage](swift-package-manager/documentation/packagedescription/target/pluginusage.md)
- [packageAccess](swift-package-manager/documentation/packagedescription/target/packageaccess.md)
