yonaskolb / yonaskolb/XcodeGen

When trying to better isolate public and private headers, multiple group folders are created in the resulting Xcode project

Open
#773 1 comment 0 reactions 0 assignees View on GitHub

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.

Screen Shot 2020-02-05 at 11 48 51 AM

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
Screen Shot 2020-02-05 at 11 47 25 AM

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.