创建空工程
sh
$ xmake create -l swift -t console testlua
add_rules("mode.debug", "mode.release")
target("test")
set_kind("binary")
add_files("src/*.swift")Swift 与 C++/Objective-C 互操作
从 v3.0.5 开始,xmake 支持 Swift 与 C++/Objective-C 的互操作。当设置了 swift.interop 目标值时,swift.interop 规则会自动启用,使得在同一个项目中混合使用 Swift 和 C++ 代码变得非常容易。
配置 Swift 互操作
您可以使用以下目标值来配置 Swift 互操作:
lua
target("cxx_interop")
set_kind("binary")
set_languages("cxx20")
add_files("lib/**.swift", {public = true})
add_files("src/**.cpp")
set_values("swift.modulename", "SwiftFibonacci") -- 设置 Swift 模块名
set_values("swift.interop", "cxx") -- 启用互操作:"objc" 或 "cxx"
set_values("swift.interop.headername", "fibonacci-Swift.h") -- 定义输出头文件名
set_values("swift.interop.cxxmain", true) -- 强制 -parse-as-library 以避免重复的 main 符号互操作模式
"objc": Objective-C 互操作模式"cxx": C++ 互操作模式
当设置 swift.interop 时,xmake 会自动生成 C++ 头文件,使 C++ 代码能够调用 Swift 函数。您可以使用 swift.modulename 定义 Swift 模块名,该名称将成为 C++ 中的命名空间。当 Swift 和 C++ 都有 main 函数时,使用 swift.interop.cxxmain 来避免重复的 main 符号。
更多例子见:Swift Examples