File: CMake.md

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (86 lines) | stat: -rw-r--r-- 2,287 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Building with CMake

<!--
This source file is part of the Swift.org open source project

Copyright (c) 2023-2024 Apple Inc. and the Swift project authors
Licensed under Apache License v2.0 with Runtime Library Exception

See https://swift.org/LICENSE.txt for license information
See https://swift.org/CONTRIBUTORS.txt for Swift project authors
-->

## Add Swift Testing to your project

Add Swift Testing to your project using the standard `FetchContent` or
`find_package` mechanism, as appropriate for your project. For example:

```cmake
include(FetchContent)
FetchContent_Declare(SwiftTesting
  GIT_REPOSITORY https://github.com/swiftlang/swift-testing.git
  GIT_TAG main)
FetchContent_MakeAvailable(SwiftTesting)
```

## Define a test executable

To build a test executable using Swift Testing, define an executable target of
the form `[YOURPROJECT]PackageTests`, set the executable suffix to be
`.swift-testing`, and link to the `Testing` target as well as any project
targets you wish to test.

The following
example shows what this might look like for a hypothetical project called
`Example`:

```cmake
add_executable(ExamplePackageTests
  ExampleTests.swift
  ...)
set_target_properties(ExamplePackageTests PROPERTIES
  SUFFIX .swift-testing)
target_link_libraries(ExamplePackageTests PRIVATE
  Example
  Testing
  ...)
```

When building the test executable, the code you're testing will need to be built
with `-enable-testing`. This should only be enabled for testing, for example:

```cmake
include(CTest)
if(BUILD_TESTING)
  add_compile_options($<$<COMPILE_LANGUAGE:Swift>:-enable-testing>)
endif()
```

## Add an entry point

You must include a source file in your test executable target with a
`@main` entry point. The following example uses the SwiftPM entry point:

```swift
import Testing

@main struct Runner {
    static func main() async {
        await Testing.__swiftPMEntryPoint() as Never
    }
}
```

> [!WARNING]
> The entry point is expected to change to an entry point designed for other
> build systems prior to the initial stable release of Swift Testing.

## Integrate with CTest

To run your test using CTest, add the test using the appropriate command line.

```cmake
include(CTest)
add_test(NAME ExamplePackageTests
  COMMAND ExamplePackageTests)
```