Hello again, Pretty long discussion is moved to build systems. Here are some my general notes and brief presentation of my project.
1. For those who may be interested - my simple implementation of syncqt.pl in C++ available here [1]. Works for me, tested and compiled core, gui, widgets, prepared all other headers. Feel free to use it for any purpose and contact me if you need. 2. Build systems. Obvious BS candidate for many projects is cmake. We see that it can handle big projects well (LLVM). Don't know much about Qbs, but if will be (is) productive and extensible enough it may be useful. Some other less spread build systems introduce heavy dependencies (like python). 3. > The general idea is kind of following that of the Gradle wrapper, where any > project that uses the Gradle build system also can include a standard wrapper > script which obtains and bootstraps the build system itself before building > your project, allowing ANY project based on that build system to be "zero > dependencies". git clone & go, the system figures out the rest as much as it > can. I'm developing similar system that is based on CMake named C++ Archive Network [2]. That's why I asked the original question. Cppan uses simple declarative (YAML) syntax plus custom cmake insertions. Cppan in some sences is similar to npm, cocoapods and some other language package managers. You point your dependencies to CPPAN and it downloads and bootstraps them for you in any config you requested. You can pass any option or link flags to all deps. They are able to inherit everything if you want to. Static/shared/mt/md/32/64/different MSVCs/compilers/cmake generators (including ninja - WIP)/build caching and much more included. As a result we get simple crosscompiling. CPPAN is crossplatform, handles package versions, dependencies, namespaces. You can register there and add your package. As PoC I've added tons of c/c++ world libraries and now it's Qt time [3,4]. qt.base.core, gui and widgets are added and working. I'm very close to single-shot (one command) building of simple widget apps (QML is just a question of time - few weeks). One-shotting of projects (building, installing, testing, your fav workflow here) is the main goal. Almost all of those packages are in 'pvt.cppan.demo' namespace. For official purposes org.* com.* could be used. E.g. org.qtproject.qt.*, org.boost.*, com.intel.* etc. They are similar to Java, C#? namespaces. More info you can find on the site. Good doc is still in progress. As not a toy project CPPAN is currently used to build tesseract-OCR on Windows [5]. Also cppan is already self-hosted today. [1] https://github.com/egorpugin/syncqt/blob/master/syncqt.cpp [2] https://cppan.org/ [3] https://cppan.org/projects/pvt.cppan.demo.qtproject [4] https://cppan.org/pvt.cppan.demo.qtproject.qt.base.core [5] https://github.com/tesseract-ocr/tesseract -- Egor Pugin On 9 March 2017 at 22:07, Adam Treat <[email protected]> wrote: > > > On 03/07/2017 03:54 PM, Thiago Macieira wrote: >> >> Same here, though I have also to concede that breaking the status quo (to >> quote Jake's tweet) is sometimes a good idea. Teambuilder -- to name >> another >> Trolltech project that had nothing to do with qt -- was a couple of orders >> of >> magnitude better than the tools that existed at the time (distcc). >> Icecream/ >> icecc came about only because TB wasn't open source, but every now and >> then I >> miss TB2 features that icecc doesn't have. TB3 would have been even >> better. >> >> Maybe qbs will be another such leapfrog. I can't fault TQtC for trying. > > > Speaking of distributed compilers... if QBS had built-in > icecream/TeamBuilder like functionality I would *love* this. It could even > bundle the tarball itself since it has the complete recipe for all the tools > necessary, the translation unit and everything in addition to create the > object file. > > That'd be one compelling feature for me. > > _______________________________________________ > Development mailing list > [email protected] > http://lists.qt-project.org/mailman/listinfo/development -- Egor Pugin _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
