[swift-users] How to optionally link swift framework into another framework

Rien Rien at Balancingrock.nl
Mon Mar 6 11:01:27 CST 2017


Well, that was a bit short…

When you want to use logging, define the ACC “USE_LOGGING” in the build settings.
When you don’t want to use logging, don’t define the ACC.

PS: You can get my logging framework from github: https://github.com/Balancingrock/SwifterLog

Regards,
Rien

Site: http://balancingrock.nl
Blog: http://swiftrien.blogspot.com
Github: http://github.com/Balancingrock
Project: http://swiftfire.nl





> On 06 Mar 2017, at 17:58, Rien <Rien at Balancingrock.nl> wrote:
> 
> You need conditional compilation.
> 
> Called “Active Compilation Conditions” in the build settings.
> 
> For example define a ACC of “USE_LOGGING”
> 
> Then in your code:
> 
> #if USE_LOGGING
> 
> import Logging
> 
> #else
> 
> struct Logging {
> 	func debug(message: string) {}
> }
> 
> #endif
> 
> 
> 
> 
> Regards,
> Rien
> 
> Site: http://balancingrock.nl
> Blog: http://swiftrien.blogspot.com
> Github: http://github.com/Balancingrock
> Project: http://swiftfire.nl
> 
> 
> 
> 
> 
>> On 06 Mar 2017, at 17:26, Jakub Bednář via swift-users <swift-users at swift.org> wrote:
>> 
>> Hello everyone,
>> 
>> I am trying to add optional logging into my framework, but for sake of this question, lets assume I want to add optional logging into an app. I have created an example with following setup:
>> 
>> 1. Logging.framework declares
>> 
>> 	public protocol Logging {
>> 		func debug(message: String)
>> 	}
>> 
>> 	and I have build the framework for the app to see it.
>> 
>> 2. Application has 
>> 
>> 	import Logging
>> 	
>> 	public class Engine {
>> 
>> 		let logger: Logging?
>> 
>> 		public init(withLogger logger: Logging? = nil) {
>> 			self.logger = logger 
>> 		}
>> 
>> 		public work() {
>> 			self.logger?.debug(“Working”)
>> 		}
>> 	} 
>> 
>> Now I don’t have the Logging.framework in Embed Binaries nor Link Frameworks lists. My app builds ok, but then fails to start telling me that Logging.framework was not loaded. I checked the binary using otool -L and Logging.framework is still referenced by the binary. Is there any way how to achieve my goal? This would be trivial with Objective-C and I still can’t figure it out in Swift.
>> 
>> Thanks a lot,
>> 
>> J.
>> 
>> _______________________________________________
>> swift-users mailing list
>> swift-users at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
> 



More information about the swift-users mailing list