加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何将编译的.swiftmodule中声明的swift函数导入到另一个swift文

发布时间:2020-12-14 05:36:21 所属栏目:百科 来源:网络整理
导读:有没有办法在. swift文件中声明一个函数(编译成.swiftmodule),就像这样: hello.swift func hello_world() { println("hello world")} main.swift import hellohello.hello_world() 我也做了a git repo with these two files and a Makefile with the compil
有没有办法在. swift文件中声明一个函数(编译成.swiftmodule),就像这样:

hello.swift

func hello_world() {
    println("hello world")
}

main.swift

import hello

hello.hello_world()

我也做了a git repo with these two files and a Makefile with the compile / link commands ready to go.目前我可以得到main.swift导入你好,但它目前无法链接…是否有另一个链接器标志我可以通过?目前Makefile是:

PWD=$(shell pwd)
APP_NAME=main
MODULE_NAME=hello
SWIFT_MODULE_PATH=$(PWD)/$(MODULE_NAME).swiftmodule
SDK=/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk


main : clean
xcrun swift $(MODULE_NAME).swift -emit-module -v
xcrun swift $(APP_NAME).swift 
    -o $(APP_NAME) 
    -sdk $(SDK) 
    -I $(PWD) 
    -Xlinker -sectalign 
    -Xlinker __SWIFT 
    -Xlinker __ast 
    -Xlinker 4 
    -Xlinker -sectcreate 
    -Xlinker __SWIFT 
    -Xlinker __ast 
    -Xlinker $(SWIFT_MODULE_PATH) 
    -v
.swiftmodule描述了Swift模块的接口,但它不包含模块的实现.仍然需要一个库或一组对象文件来链接您的应用程序.这是一个修改版本的makefile,它同时创建libhello.dylib和hello.swiftmodule,并针对它们构建应用程序:
PWD=$(shell pwd)
APP_NAME=main
MODULE_NAME=hello
LIB_NAME=lib$(MODULE_NAME).dylib
LIB_PATH=$(PWD)/$(LIB_NAME)
SWIFT_MODULE_PATH=$(PWD)/$(MODULE_NAME).swiftmodule

main : clean
    xcrun swift 
        -emit-library 
        -o $(LIB_PATH) 
        -Xlinker -install_name 
        -Xlinker @rpath/$(LIB_NAME) 
        -emit-module 
        -emit-module-path $(SWIFT_MODULE_PATH) 
        -module-name $(MODULE_NAME) 
        -module-link-name $(MODULE_NAME) 
        -v 
        $(MODULE_NAME).swift
    xcrun swift $(APP_NAME).swift 
        -o $(APP_NAME) 
        -I $(PWD) 
        -L $(PWD) 
        -Xlinker -rpath 
        -Xlinker @executable_path/ 
        -v


clean :
    rm -rf $(APP_NAME) $(LIB_NAME) $(MODULE_NAME).swiftmodule $(MODULE_NAME).swiftdoc

在没有文件的情况下,我不能说这是完全正确的,但它是有效的.

请注意,如果您只想在应用程序模块中使用多个源文件,那么更简单,在main.swift中不需要导入声明或模块限定:

swift -o main hello.swift main.swift

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读