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

前端之家收集整理的这篇文章主要介绍了如何将编译的.swiftmodule中声明的swift函数导入到另一个swift文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法在. swift文件中声明一个函数(编译成.swiftmodule),就像这样:

hello.swift

  1. func hello_world() {
  2. println("hello world")
  3. }

main.swift

  1. import hello
  2.  
  3. hello.hello_world()

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

  1. PWD=$(shell pwd)
  2. APP_NAME=main
  3. MODULE_NAME=hello
  4. SWIFT_MODULE_PATH=$(PWD)/$(MODULE_NAME).swiftmodule
  5. SDK=/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
  6.  
  7.  
  8. main : clean
  9. xcrun swift $(MODULE_NAME).swift -emit-module -v
  10. xcrun swift $(APP_NAME).swift \
  11. -o $(APP_NAME) \
  12. -sdk $(SDK) \
  13. -I $(PWD) \
  14. -Xlinker -sectalign \
  15. -Xlinker __SWIFT \
  16. -Xlinker __ast \
  17. -Xlinker 4 \
  18. -Xlinker -sectcreate \
  19. -Xlinker __SWIFT \
  20. -Xlinker __ast \
  21. -Xlinker $(SWIFT_MODULE_PATH) \
  22. -v
.swiftmodule描述了Swift模块的接口,但它不包含模块的实现.仍然需要一个库或一组对象文件链接您的应用程序.这是一个修改版本的makefile,它同时创建libhello.dylib和hello.swiftmodule,并针对它们构建应用程序:
  1. PWD=$(shell pwd)
  2. APP_NAME=main
  3. MODULE_NAME=hello
  4. LIB_NAME=lib$(MODULE_NAME).dylib
  5. LIB_PATH=$(PWD)/$(LIB_NAME)
  6. SWIFT_MODULE_PATH=$(PWD)/$(MODULE_NAME).swiftmodule
  7.  
  8. main : clean
  9. xcrun swift \
  10. -emit-library \
  11. -o $(LIB_PATH) \
  12. -Xlinker -install_name \
  13. -Xlinker @rpath/$(LIB_NAME) \
  14. -emit-module \
  15. -emit-module-path $(SWIFT_MODULE_PATH) \
  16. -module-name $(MODULE_NAME) \
  17. -module-link-name $(MODULE_NAME) \
  18. -v \
  19. $(MODULE_NAME).swift
  20. xcrun swift $(APP_NAME).swift \
  21. -o $(APP_NAME) \
  22. -I $(PWD) \
  23. -L $(PWD) \
  24. -Xlinker -rpath \
  25. -Xlinker @executable_path/ \
  26. -v
  27.  
  28.  
  29. clean :
  30. rm -rf $(APP_NAME) $(LIB_NAME) $(MODULE_NAME).swiftmodule $(MODULE_NAME).swiftdoc

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

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

  1. swift -o main hello.swift main.swift

猜你在找的Swift相关文章