我正在做Advent Of Code并将每一天的项目放在一个Swift包中,这样我就可以轻松地在它们之间分享各个部分。每天都会生成自己的可执行文件day01
,day02
,等等。
我的包装布局如下:
$ 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如果您想看看我在做什么。