迁移Swift项目至终端Make编译时,分文件编译目标文件提示函数未找到的问题求助
迁移Swift项目至终端Make编译时,分文件编译目标文件提示函数未找到的问题求助
我正在把一个基于Xcode的Swift项目改成终端编译的版本,打算用Make来构建。原本的思路是先把每个.swift文件编译成.o目标文件,再把这些目标文件链接成最终的可执行文件,但过程中遇到了个棘手的问题:用swiftc -c单独编译文件时,编译器提示找不到某个函数的声明,可直接把所有文件一起编译的时候却完全正常。
举个具体的例子:
- main.swift 的内容:
mes("Hello Swift!")
- message.swift 的内容:
func mes(_ a: String) { print(a) }
直接执行下面的命令编译,完全能成功生成可执行文件:
swiftc main.swift message.swift -o main
但如果分步骤编译目标文件再链接,就会报错:
# 编译main.swift为目标文件 swiftc -c main.swift -o main.o # 编译message.swift为目标文件 swiftc -c message.swift -o message.o # 链接目标文件生成可执行文件 swiftc main.o message.o -o main
报错信息如下:
deepinFolk@MacBook ~ % swiftc -c main.swift -o main.o
main.swift:1:1: error: cannot find 'mes' in scope
mes("WOW") `- error: cannot find 'mes' in scope
有没有大佬能教教我该怎么解决这个问题呀?😭
内容来源于stack exchange
相关产品推荐
相关产品推荐

