避免 swift 中的自动框架链接
Avoid automatic framework linking in swift
我有一个example project,由一个主要目标(LinkerTests
)和一个从属动态框架(Dynamic
)组成。
如果你运行这个项目,你会看到下面的dyld二进制加载:
dyld: loaded: {DerivedDataPath}/Build/Products/Debug-iphonesimulator/Dynamic.framework/Dynamic
由于 AppDelegate.swift
中的 import Dynamic
而发生此 dyld 二进制加载,尽管存在以下情况:
Link Binary With Libraries
构建阶段为空
CLANG_MODULES_AUTOLINK
设置为 false
我需要实现的是避免这种自动隐式链接。
这可能吗?提前致谢!
相关问题:Don't we need to link framework to XCode project anymore?
显然此功能称为自动链接。 Swift 编译器隐式发出额外的链接器标志,链接源代码所依赖的所有模块 (import Dynamic
)。
无法完全禁用它。但是有一个私有编译器标志允许您禁用单个框架的自动链接:swiftc -disable-autolink-framework <framework>
.
一些参考:
https://gist.github.com/zrzka/c89705ff634ea01aebc1
https://github.com/niw/automatic_linking_tool/blob/master/README.md
我很确定你可以将 -v
附加到 swiftc
并且它会将所有底层调用打印为命令。希望您也能看到链接器调用。
您应该将私有标志包装在两个 -Xfrontend
标志中以允许使用它:
OTHER_SWIFT_FLAGS = "-Xfrontend -disable-autolink-framework -Xfrontend Dynamic"
要使其生效,您仍然必须在 Apple Clang - 语言 - 模块下设置 Link Frameworks Automatically No。
我有一个example project,由一个主要目标(LinkerTests
)和一个从属动态框架(Dynamic
)组成。
如果你运行这个项目,你会看到下面的dyld二进制加载:
dyld: loaded: {DerivedDataPath}/Build/Products/Debug-iphonesimulator/Dynamic.framework/Dynamic
由于 AppDelegate.swift
中的 import Dynamic
而发生此 dyld 二进制加载,尽管存在以下情况:
Link Binary With Libraries
构建阶段为空CLANG_MODULES_AUTOLINK
设置为 false
我需要实现的是避免这种自动隐式链接。 这可能吗?提前致谢!
相关问题:Don't we need to link framework to XCode project anymore?
显然此功能称为自动链接。 Swift 编译器隐式发出额外的链接器标志,链接源代码所依赖的所有模块 (import Dynamic
)。
无法完全禁用它。但是有一个私有编译器标志允许您禁用单个框架的自动链接:swiftc -disable-autolink-framework <framework>
.
一些参考: https://gist.github.com/zrzka/c89705ff634ea01aebc1 https://github.com/niw/automatic_linking_tool/blob/master/README.md
我很确定你可以将 -v
附加到 swiftc
并且它会将所有底层调用打印为命令。希望您也能看到链接器调用。
您应该将私有标志包装在两个 -Xfrontend
标志中以允许使用它:
OTHER_SWIFT_FLAGS = "-Xfrontend -disable-autolink-framework -Xfrontend Dynamic"
要使其生效,您仍然必须在 Apple Clang - 语言 - 模块下设置 Link Frameworks Automatically No。