[cmake-developers] Extending XCode scheme generation support

Steven Velez sbv1976 at gmail.com
Sun Oct 8 13:18:26 EDT 2017


After spending some time trying to figure out how to affect the build
"destination",  it seems that destinations associated with a given
scheme are not influenced by anything beyond the targets referenced as
build targets for the scheme.  In other words, if a scheme builds an
iOS target, then the iOS destinations/devices/simulators will be
present in the UI, and if it references a MacOS target, then the
active computer will be available in the destinations UI.

The options available in the scheme proper seem to be similar in
either case, and the proposal so far is fairly agnostic to specific
options, so I think the current proposal stands without modification
in this respect.  Does this seem like a reasonable statement?

This investigation did make me realize that each scheme can specify
building more than one target, so I would revise my statement that the
last target referencing a given scheme name should "win".   Instead, I
think each target should be built by the given scheme, and the union
of settings provided by each target should be present in the scheme.
If multiple targets indicate a similar setting, then in this case, the
last setting should win, and this should print a warning... but if
order of processing the schemes/targets cannot match source order,
then perhaps it should be noted that what is "last" cannot be
guaranteed....

Thanks,
Steven


On Thu, Oct 5, 2017 at 9:26 AM, Steven Velez <sbv1976 at gmail.com> wrote:
> Thanks for the followup Gregor.
>
> One thing that concerns me about the property-centric approach is that
> I can't think of a way to use properties for generating a custom
> scheme that builds the ALL_BUILD target.  I would assume this would
> run into the same issues and limitations that I have seen in google
> searches with trying to control the the folder for the ALL_BUILD
> target with the FOLDER target property (even though this would be a
> Visual Studio concern).  It seems that is addressed now with the
> *_TARGETS_FOLDER global properties, so maybe an analog can be
> established?
>
> Regarding sequencing changes, do you mean to come up with a set of
> smaller logical changes/MRs so that this isn't all dumped at once?  If
> so, I think we could implement XCODE_SCHEME_NAME and a single
> additional property without generator support, then add generator
> support, then add the balance of the properties one-by-one.  Would
> that make sense?
>
> I have to get more familiar with CMake's testing methodologies to have
> any comment on that portion.
>
> If two targets specify the same schema name, then overwrite/accept
> latest with a warning?
>
> Regarding ios builds or perhaps having multiple build devices (I have
> seen some hand-made projects with 64-bit and 32-bit desktop clients
> selectable), then I will also have to get back to you on that.  I was
> thinking the property definitions were generic enough to handle any
> needs... and I assumed that devices were handles with additional
> scheme files, but I realize that was a bad assumption.
>
> Will try to have that thought out soon.
>
> Thanks,
> Steven
>
> On Mon, Oct 2, 2017 at 9:05 AM, Gregor Jasny <gjasny at googlemail.com> wrote:
>> Hello Steven,
>>
>> On 9/22/17 3:36 AM, Steven Velez wrote:
>>> # Property-Centric
>>> In this proposal, the generation of the scheme files is customized primarily by
>>> a user setting additional, specialized properties on a given target, which then
>>> affect the generation of the scheme files associated with that target.
>> thank you for working an the scheme proposal. I also believe that the
>> property-centric approach is better suited and easier to implement than
>> the file-centrix one.
>>
>> Next steps would be to sequence the necessary changes and define test
>> cases. I could imagine that adding generator-expression support would be
>> much harder to implement that other things.
>>
>> Things that also should be considered are:
>> * differences between macOS and iOS when generating a scheme
>> * what should happen if two targets specify the same schema name
>>
>> Thanks,
>> Gregor


More information about the cmake-developers mailing list