私は1つのファイルSwiftコマンドラインスクリプトを持っています(プロセスIDを指定してメニューバーの内容をダンプします)。 Swiftを配布用にコンパイルする方法
は、私が使用していたAPIのアイデアを与えるために、ここではいくつかの関連する行です:import Foundation
import Cocoa
// ...
func getAttribute(element: AXUIElement, name: String) -> CFTypeRef? {
var value: CFTypeRef? = nil
AXUIElementCopyAttributeValue(element, name as CFString, &value)
return value
}
// ...
var app: NSRunningApplication? = nil
if pid == -1 {
app = NSWorkspace.shared().menuBarOwningApplication
}
else {
app = NSRunningApplication(processIdentifier: pid)
}
// ...
let axApp = AXUIElementCreateApplication(app.processIdentifier)
ファイル全体がhere可能です。
swiftc menu.swift
を使用してコンパイルすると、Swiftがインストールされているシステムで正常に動作させることができます。
私はスウィフトを持っていない誰かに実行可能menu
を共有する場合、ターミナルを経由して、それを実行しているとき、彼らは次のエラーを取得する:
Code 6: dyld: Library not loaded: @rpath/libswiftAppKit.dylib
Referenced from: ./menu
Reason: image not found
私は静的なものをリンクするが、私は確認していないする必要があります理解。私はこれを簡単にテストすることはできません。なぜなら、Swiftを使わないでmacOSビルドにアクセスすることはできないからです。
swiftc
を使用すれば、どのMacOSシステムでも実行できるようにスクリプトをコンパイルできますか?
静的ライブラリではなく動的ライブラリをリンクする必要があります。 – Sulthan
'AppKit'をインポートする必要があるようです – vadian
リンカのコマンドラインオプションを探したり、オブジェクトファイル' -o'にコンパイルしてリンカを手動で起動します。 – Sulthan