如何在单个Swift 3程序包中拥有多个可执行文件?

时间:2016-12-09 04:49:39

标签: swift3

我正在做Advent Of Code并将每一天的项目放在一个Swift包中,这样我就可以轻松地在它们之间分享各个部分。每天都会生成自己的可执行文件day01day02,等等。

我的包装布局如下:

$ tree
.
├── Package.swift
├── Sources
│   ├── SomethingShared
│   │   └── Shared.swift
│   ├── day01
│   │   └── main.swift
│   └── day02
│       └── main.swift
└── Tests
    ├── SomethingSharedTests
    │   └── SharedTest.swift
    ├── day01Tests
    │   └── day01Test.swift
    └── day02Tests
        └── day02Test.swift

这构建良好,但测试不会与多个main.swift链接。

$ swift test
Compile Swift Module 'SomethingShared' (1 sources)
Compile Swift Module 'day02Tests' (1 sources)
Compile Swift Module 'day01Tests' (1 sources)
Linking ./.build/debug/day01
Linking ./.build/debug/day02
Compile Swift Module 'SomethingSharedTests' (1 sources)
Linking ./.build/debug/AdventOfCode2016PackageTests.xctest/Contents/MacOS/AdventOfCode2016PackageTests
duplicate symbol _main in:
    /Users/schwern/tmp/foo/.build/debug/day01.build/main.swift.o
    /Users/schwern/tmp/foo/.build/debug/day02.build/main.swift.o
ld: 1 duplicate symbol for architecture x86_64
<unknown>:0: error: link command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: build had 1 command failures
error: exit(1): /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f /Users/schwern/tmp/foo/.build/debug.yaml test

似乎正在尝试将main函数链接到一个库中。

我该怎样防止这种情况?或者,有没有更好的方法来实现这一目标?

如果你想查看内容,这里是a zip of the test project,那里不是很多。 Here is my real project如果您想看看我在做什么。

0 个答案:

没有答案