Skip to content

Instantly share code, notes, and snippets.

@timothy1ee
Created August 22, 2011 04:35
Show Gist options
  • Save timothy1ee/1161664 to your computer and use it in GitHub Desktop.
Save timothy1ee/1161664 to your computer and use it in GitHub Desktop.
Vendor tasklist notes
Basic demo application
======================
- Build a sample project/workspace
- Add all commonly used iOS libraries
Sample Folder structure
=======================
- demo_project
- demo_project.pbxproj
- multiple targets
- demo_project.xcworkspace <-- all vendor projects
- vendored
- three20
- three20.pbxproj
- <source code for three20>
- asi-http-request
- asi-http-request.pbxproj
- Vendors
- Vendors.lock
- .gitignore
vendored
Implementing vendor install
===========================
- Create an empty workspace (applescript)
- Add the application project to the workspace (applescript)
- Iterate through all projects in the workspace and "discover" any Vendor projects (applescript or plist?)
- Remove unused vendor projects
- Add required vendor projects
- Add/remove static library as dependency to target (plist)
- Add/remove a PBXBuildFile
- Add/remove a PBXFileReference
- Add/remove to PBXFrameworksBuildPhase as a file
- Add/remove to random ass group that also contains Frameworks and Products
- Add $(BUILT_PRODUCTS_DIR) to user header search path for target
- Add required Frameworks
- Modify linker flags
Creating a "proper" static library
==================================
If there is no project file...
- Create a new project file (based on static library template) (applescript)
- Add all header/source/resource files to project file (applescript)
For all project files...
- Mark select (or all) header files with public visibility
- Set the “Installation Directory” build setting to “$(BUILT_PRODUCTS_DIR)”
- Set the “Skip Install” build setting to “Yes”
- Set the “Public Headers Folder Path” to “$(TARGET_NAME)”
Vendor assumptions
==================
- Library specs will work for some recent version of a vendor library. However, the spec may not be completely accurate/functional for all versions.
- ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment