Comments (5)
Depending on Xcode to Just Work™ is a dangerous game. 🚎
from carthage.
Related to/dependent upon #39.
from carthage.
After reviewing Xcode's plethora of build settings, and what other people are doing to solve this kind of “universal framework” problem, here's what I've found:
- There are seemingly no build paths that are guaranteed to include a platform component, although some happen to sometimes.
- Most people distribute fat iOS device + simulator binaries by manually running
lipo
at the end of their build. Oh, and this hasn't changed in multiple Xcode major versions (I can attest). 😞
Since we're apparently not going to get any help from the toolchain, here's what I propose:
carthage build
either builds for OS X or iOS, not both at once. This means we'll need to thread platform information (from the application project) through every dependency somehow. It may even disallow OS X and iOS binaries from existing in parallel, if necessary.- For iOS, we automatically perform separate builds for the
iphoneos
andiphonesimulator
SDKs, then roll them together withlipo
. This depends on the built.framework
having the same structure on both, but that should be acceptable, since we're only going to be building a single target (with different settings). - We automatically place the built framework somewhere that is not dependent upon Xcode build settings.
This definitely has some drawbacks over my initial suggestion (most notably the first item above), but it seems good enough for a first release, and doesn't involve stepping on Xcode's toes.
@Carthage/carthage Any thoughts?
from carthage.
carthage build
either builds for OS X or iOS, not both at once.
So I understand, we'd have to do this because the build paths don't include a path component?
For iOS, we automatically perform separate builds for the
iphoneos
andiphonesimulator
SDKs, then roll them together withlipo
.
👍
from carthage.
we'd have to do this because the build paths don't include a path component?
If you meant “platform component,” yes, that's correct.
Although it occurred to me that we could structure our built binaries in a way that allows both to exist side-by-side. For example, if the application project contained a Binaries
folder, maybe we could set up Binaries/iOS
and Binaries/Mac
, and just ask the user to link whichever platform(s) they care about.
from carthage.
Related Issues (20)
- Archive fails with multiple platform xcframeworks in Xcode 14
- carthage/carthage
- xcode14.2 carthage update failed
- xcode14.3 carthage update failed
- xcode 14.2 carthage update fail HOT 1
- Module compiled with Swift 5.5.1 cannot be imported by the Swift 5.8.1 compiler
- Carthage checking out incorrect versions
- [Workaround Listed] 'Could not find any available simulators for visionOS', even after having Xcode UI remove visionOS Platform/SDK.
- An unknown server-side error occurred while processing the command. Original error: Unable to launch WebDriverAgent because of xcodebuild failure: Command 'carthage bootstrap --platform iOS' exited with code 1
- Xcode 15: make can't install carthage, -static-stdlib not supported HOT 3
- "Building universal frameworks with common architectures is not possible."
- Carthage doesn't catch frameworks built with a newer swift version. HOT 1
- Does Carthage support having different versions of the same library together?
- Builds a dependency twice when it contains a SPM target with the same name
- https://SoundCloud.com/manu_s0
- Sc
- Carthage Build Failure: Task failed with exit code 70 HOT 1
- `credential.helper=/usr/local/share/gcm-core/git-credential-manager` makes GUI windows pop up. How many windows pop up may have confusing aspects. HOT 3
- Carthage
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from carthage.