yonaskolb / yonaskolb/XcodeGen
When trying to better isolate public and private headers, multiple group folders are created in the resulting Xcode project
Nobody has claimed this yet.
- Dominant language
- Swift
- Stars
- 8.8k
- Forks
- 908
- Avg merge
- 17d 14h
- Merged PRs (30d)
- 2
Description
I was looking towards moving away from Pods and using prebuilt libraries. As part of the process I was experimenting using xcodegen to create Xcode project files for the pods.
When pods builds, it has a method for creating umbrella headers and public headers. For the most part I've been successful at creating Xcode projects which can build each pod. However I've run into a problem with FLEX. The podspec for FLEX indicates only one public header "FLEXManager.h". All their source is placed under a "Classes" directory. I tried using this rule to make "FLEXManager.h" public.
sources:
- path: ../Pods/FLEX/Classes/FLEXManager.h
headerVisibility: public
- path: ../Pods/FLEX/Classes/
includes:
- "**/*.[hm]"
excludes:
- "FLEXManager.h"
headerVisibility: private
The net result of this, however is it creates 2 Classes group folders.
I've also tried this variation and it seems to nest a Classes group folder underneath another.
sources:
- path: ../Pods/FLEX/Classes/FLEXManager.h
headerVisibility: public
group: Classes
- path: ../Pods/FLEX/Classes/
includes:
- "**/*.[hm]"
excludes:
- "FLEXManager.h"
headerVisibility: private
group: Classes
I would expect only one Classes folder.
I've tried other variations that have resulted in one Classes folder, but in doing so, "FLEXManager.h" is treated as private.
Is there either a way of handling this properly? Or is this an issue with xcodegen?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the issue with the two sources configurations shown in the issue and inspect how XcodeGen handles their generated Xcode project groups. Done means the public FLEXManager.h and the private headers appear under one Classes group without changing their visibility.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- swift, yaml
- Domain
- build-system, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100