Skip to content
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

Project dead? #136

Open
hinell opened this issue Jun 11, 2023 · 5 comments
Open

Project dead? #136

hinell opened this issue Jun 11, 2023 · 5 comments

Comments

@hinell
Copy link

hinell commented Jun 11, 2023

Anyone?

Tonnes of efforts were put into this project. Wouldn't it be much better to implement a frontend to the cmake and create better scripting language like meson, but which is much faster?

@toeb
Copy link
Owner

toeb commented Jun 11, 2023

You could say the project is dead - I wrote this as a student and haven’t used cmake a lot since working. I am sorry for not supporting it more. Personally I think there should be a standard build system for c++ and like it or not it has been cmake . But due to cmake being very lacking partially I developed this project . The idea for me was that cmake is a root dependency you could use a vanilla machine to install everything you need , from compiler of any language to 3rd party packages for compilation. Everything could bootstrap itself and this project supported some of these ideas. Anyway no more rants from me - and use this project if you find it useful:)

@hinell
Copy link
Author

hinell commented Jun 12, 2023

I am sorry for not supporting it more

Nothing to be sorry about. You made a great job we all appreciate. If it's ever used in any commercial project you should get rewarded.

Personally I think there should be a standard build system for c++

Same here. I think CMake scripting isn't perfect, but that's what we have. I think in future it would be best if it's split into a frontend and a backend so front-end scripting language can be easily switched and upgraded.

I learned recently, that CMake was builtin with simplicity in mind, so it doesn't use any sophisticated grammar parsing tools like Bison. Basically, it just evaluates commands.

If you are interested in how cmake works, see this link: https://aosabook.org/en/v1/cmake.html#footnote-1

@hinell
Copy link
Author

hinell commented Jun 12, 2023

Btw. If you don't maintain this project often, you can make a notices at the top of REDME.md so users will quickly get idead whether to use it or not. Thanks!

@andry81
Copy link

andry81 commented Jun 12, 2023

I learned recently, that CMake was builtin with simplicity in mind, so it doesn't use any sophisticated grammar parsing tools like Bison. Basically, it just evaluates commands.

CMake does not have has builtin containers like lists, dictionaries, maps and so on. For example, the List container is not really a builtin and just based up on the existing set of commands like set which sets a single string value not multiple. Plus multiple issues, like around ;-character discarding and escaping, and so on.

For example:

These issues just a minor example of how is hard to build a simple parser on the cmake language. So they just decided to push out the not minimizable complexity out of the language which brought another complexity in. This rather bad than good.

Or another example with incompleteness, when 3dparty libraries trying to change shared variables like CMAKE_BUILD_TYPE and breaks the entire build:

Or no ability to check whether a library or component support the multiconfig (CMAKE_BUILD_TYPE must not be used) or single config (CMAKE_BUILD_TYPE must be used), because cmake projects with the multiconfig must call only to projects with the multiconfig.

Or system functions hooking is another way of incompleteness in cmake.

I've built my own library up on that and know that I am talking about: https://github.com/andry81/tacklelib/tree/HEAD/cmake/tacklelib/

@hinell
Copy link
Author

hinell commented Jun 13, 2023

@andry81 I wasn't talking about creating a parser by using CMake language. I was talking about implementation of a "parser" written in C++ that cmake uses to parse its CMakeListst.txt. Cmake doesn't use parser-generators cause it was striving for simplicity since day 0 of its creation. That's the reason its language is so primitive by modern standards.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants