# What exactly does \`-c release\` do?

**URL:** <https://forums.swift.org/t/what-exactly-does-c-release-do/78546>\
**Category:** Compiler\
**Tags:** spm, packagemanager, build, swiftpm\
**Created:** [March 15, 2025, 1:37pm UTC](https://forums.swift.org/t/what-exactly-does-c-release-do/78546 "2025-03-15T13:37:32Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![c01](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/c01/32/40036_2.png) [@c01](https://forums.swift.org/u/c01)\
**Post date:** [March 15, 2025, 1:37pm UTC](https://forums.swift.org/t/what-exactly-does-c-release-do/78546/1 "2025-03-15T13:37:32Z")

</div>

Hi!

1: What exactly does `-c release` do when passed to `swiftui build` in a package? From looking at SPMs source briefly, I'd say things like `-Xlinker -dead_strip`, `-O`, and `-O2` (C flag, so probably with `-Xcc`?), but is that documented anywhere?

2: I'd like to reproduce the same behavior by invoking `swiftc`, is that possible; and if so, how?

cheers

---

<div class="post-metadata">

**Author:** ![Slava\_Pestov](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/slava_pestov/32/30204_2.png) [@Slava\_Pestov](https://forums.swift.org/u/Slava_Pestov)\
**Post date:** [March 15, 2025, 2:26pm UTC](https://forums.swift.org/t/what-exactly-does-c-release-do/78546/2 "2025-03-15T14:26:42Z")

</div>

> [@c01](#):
>
> 1: What exactly does `-c release` do when passed to `swiftui build` in a package? From looking at SPMs source briefly, I'd say things like `-Xlinker -dead_strip`, `-O`, and `-O2` (C flag, so probably with `-Xcc`?), but is that documented anywhere?

I can't speak to the linker flags, but broadly speaking it enables whole-module compilation (`-wmo` swiftc flag) and optimizations (`-O`).

> [@c01](#):
>
> 2: I'd like to reproduce the same behavior by invoking `swiftc`, is that possible; and if so, how?

```swift
swiftc -wmo -O -module-name MyApp file1.swift file2.swift file3.swift

```

Note that `-wmo` doesn't do anything if there is only one source file.

---

<div class="post-metadata">

**Author:** ![Cyberbeni](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/cyberbeni/32/46241_2.png) [@Cyberbeni](https://forums.swift.org/u/Cyberbeni)\
**Post date:** [March 15, 2025, 2:31pm UTC](https://forums.swift.org/t/what-exactly-does-c-release-do/78546/3 "2025-03-15T14:31:16Z")

</div>

Add `--verbose` or `--very-verbose` to your `swift build` command.

---

<div class="post-metadata">

**Author:** ![c01](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/c01/32/40036_2.png) [@c01](https://forums.swift.org/u/c01)\
**Post date:** [March 15, 2025, 2:45pm UTC](https://forums.swift.org/t/what-exactly-does-c-release-do/78546/4 "2025-03-15T14:45:37Z")

</div>

Thanks!
