-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to represent header-only libraries #35
Comments
That's how CMake models header-only libraries for what it's worth. I suppose it's possible for CPS to have a I think more interestingly, I'd like to see #18 looked at so that it's more clear what a header-only library actually is. Right now, most build systems treat it as a header include directory and let the compiler worry about how headers interrelate with other things. I think end users (C++ programmers) could use a lot more support, and I think that requires modelling that header-only libraries actually consist of specific headers that have designed APIs. For instance, there would need to be metadata to steer users away from including a "private" |
The In general, the idea of a component specification is 'you need to do X, Y and Z' to use me, where those possible things are 'also use another component', 'link this artifact', 'use these compile definitions', etc. At minimum, in a C-like world, possible target types are stand-alone executable, shared library, static library, and no binary (link) artifact. A header-only library is the last. Right now the canonical name for that is |
Okay. Conceptually "Interface" sounds more to me like "We renamed this component, and this 'Interface' maintains backwards compat" or "we have 100 implementation details but 10 supported 'Interfaces'", which sound pretty useful (LLVM has some of these "convenience" targets that just bundle up many implementation libraries) |
Well, to be fair, those are also use cases for |
I think it would be useful to enumerate some of the common uses we envision for "interfaces"; or to mention that header-only libraries would be represented by "interfaces". |
That sounds like a reasonable action item; if not in the spec itself, then at least in the supporting 'tutorial' material we really need to get working on. 🙂 |
It seems odd to call them an
Interface
, but there doesn't seem to be another way to represent themThe text was updated successfully, but these errors were encountered: