This project aim, is to build an IDE for "modern C++", using only free tools. The aim is to use free compilers, and libraries, using C++14 or 17.
The IDE will use as a build system CMake and will support conan. That means that developers using this IDE will not have to deal with low level integration of packages - just like modern languages do (like Go, Rust, Python and Java using Gradle/Maven).
I always tend to write "desktop" GUIs in Qt. However - it feels too bloated, and not going to the same direction as standard C++ is. Qt was designed when C++ did not even have STL - and much of its ideas are around it.
I started writing a GUI for an IDE (how original) kept going. How long can I go?
The build system tested mainly is GCC, just because its available. I also test using Clang on Linux. I also aim to use ccache by default, even on windows, to speed up compilation. So - the IDE will:
if $BUILDIR not available
mkdir $BUILDIR
conan install
cmake -S $SOURCE -B $BUILDIR
cmake -B $BUILDIR
Which means that the user of the IDE will need to edit CMakeLists.txt
- and
connanfile.txt
and the code will just flow. Just like in modern languages.
- Layout/GUI
- I need to be able to put buttons on the right on the toolbar. I am no using a regular toolbar. (DONE, reach the basic limit of Nana) http://nanapro.org/en-us/forum/index.php?u=/topic/1349/gghelp-with-layout-design
- When adding an editor from the list box click handler, the tabs are displayed but no editor is available. It goes out of scope and dies? (FIXED) http://nanapro.org/en-us/forum/index.php?u=/topic/1352/ggadding-a-new-page-to-tabbar-from-a-click-handler
- On startup - I zoom the window after its shown. How to do this before? How to save/restore geometry?
- We need a good editor. I am unsure if Nana has something usable
- I am not against old fashio menus - but they are obsolete. The app should have an option to display the menus - but by default, on menus will be visible.
- IDE's build system
- Nana needs to be built as a shared object/DLL. This fails on build. cnjinhao/nana#601
- On Windows - I am unable to build png and jpeg libraries. Again - all these need to be shared.
- Need to investigate how to use clang on Windows.
- Identify how to use mingw-makefiles, this fails to work.
- Integrate https://github.com/TheLartians/Format.cmake into project default
- Missing APIS
- Filesystem: add standard directories as Qt has.
- Sub shell running: need a class to start, stop (pause?) sub-proces, and read stdout/stderr - write stdin (needed?)
- How to detect the main target from a CMakeFile?
- On Linux - use native open file/directory dialogs
- IDEs features
- Save open tabs
- New project wizard
- It would be nice to have markdown editor, we can use a small HTML library for rendering: https://github.com/litehtml/litehtml
- Project wide search
- Git integration
- We need to integrate all the cool new clang tools: format and tidy.
- Intgrate a language server: https://clangd.llvm.org/installation.html, https://github.com/MaskRay/ccls
- Integrate a debugger, gdb/lldb
- Set run environment: PATH, LD_LIBRARY_PATH, and command line arguments for application being developed
- Usage/installation documentation
- It would be nice if on runtime that would detect what needs to be installed, and would install it on demand (you are missing CMake, CCache and a compiler -> click here to install them).