First impressions from new user

General questions regarding the usage of CodeLite
buergi
CodeLite Curious
Posts: 1
Joined: Thu Jul 23, 2020 8:26 pm
Genuine User: Yes
IDE Question: C++
Contact:

First impressions from new user

Post by buergi »

Hi there,

I'm trying out CodeLite since a few days now and I'd like to give some honest feedback. I'm using CodeLite 14.0.0 on Win10 with mingw64 toolchain.

I chose CodeLite primarily because of the lite in the name, I'm not much of a fan of resource hogs like Eclipse or kdevelop.
The first steps of using codelite were very easy. I really like the look and feel, the interface is clean and simple. I love it's gdb interface, it worked out of the box just as expected. Same for cscope. I'm also very positively surprised by the simple cmake integrations (although I have some problems with it). All in all I really like the IDE.

However, unfortunately there are loads of usability problems and bugs i stumbled upon. Especially right at the beginning I feeled like stumbling from one WTF-moment to the next. After learning those peculiarities of CodeLite I slowly become to really like it, but I like to describe my impressions here as when tackling them it might lead to an improved usability for other new users. Please don't consider them as harsh insults but as unfiltered first impressions. So here we go:

I first started by creating a "File System Workspace", choose some directory. Then New > New Project. To be it seems the workspace was silently converted into a C++ workspace, all Directories in the Workspace sidebar are gone and only the new project remains. => WTF, BUG?

After playing around a but I started over again by creating a C++ workspace instead. Then I created a simple C++ console project. As a project folder I chose a folder which already contained a simple sample main.cpp file. CodeLite just overwrote it without asking => WTF, BUG
I then imported an include directory from a header-only library
=> All subfolders were added as virtual folders directly under the project. => WTF
=> Tried moving all of them into a new virtual folder called "include", which is not possible => WTF
=> So I manually created a new virtual folder beneath "include" and moved all files manually into theses folders.
Then everything compiled fine.
I added a library project and a unittest project to the same workspace. It took some time to build unittest-cpp for mingw64 (unfortunately it is not in the repositories) but it also went fine.
I added some code, noticed I got some whitespace at the end of some lines, so I tried to remove it
CTRL+H enter " *$" (without the quotes), enable regex and hit "Replace all" => UI completely hangs indefinitely => BUG
Force closed CodeLite, reopened it again, fortunately nothing was lost.
I finished some test code, set include and linking directories in the project folders, all very easy and straight forward. But it didn't work, I rebuilt, cleaned, built over and over but, it never linked the library into by executable => WTF
After some time I found out I had to manually call "Run CMake", would be nice if this would be called automatically.
Chose the "Build Order" in the dialog so the library is marked as a dependency for the commandline project and the unittest. First I saw no effect, no matter what I did => WTF
I quickly noticed I again had to manually execute "Run CMake" for all projects. Then it worked.
Unfortunately when changing the library and building the unittest, the library is compiled but the unittest is not re-linked to the new library.
After reading the cmake documentation, especially this section I found the way to do it right, instead of linking to libfoobar.a one needs link to foobar, assuming foobar is the project name, or more precisely the library target name in CMakeLists.txt add_library command. Now a simple F7 builds everything just fine.

Now some comments regarding the UnitTest++ plugin:
What I found strange is that a "Build and Run Project" does run it in a command line window and the UnitTest++ windows is not updated, while when running "Build Project" and then "Run" it runs quietly and does update the UnitTest++ window, this is maybe a tiny BUG as well.
Similarly when calling "Run" without having build the project CodeLite says "Project contains 0 tests. Nothing to be done" which is a little confusing, better would be "Unittest not build yet" or similar.
Another aspect which does not seem to be working is the box in the UnitTest++ window which should show a list of failed tests. The unittest outputs something like "C:\src\FoobarTest.cpp:11:1: error: Failure in TestFoobar_foobar: Expected 123 but was 456" on the command line, but CodeLites unittest plugin doesn't seem to catch it.

All in all I'm now pretty happy with CodeLite apart from some minor bugs and inconsistencies it works really well. The only thing I'm just not getting is this concept of Virtual Folder in C++ workspaces. Maybe someone can enlighten me here. It seems the only purpose is to allow managing the files in the project with a different structure than on the file system. This structure, however, is only considered in the sidebar and not during build. So it just helps keeping the overview which is a great feature I think.
But I think it should be an additional feature, the standard should be to really map the folder structure on the drive (just as in the File System Workspace mode).

Thanks a lot for developing CodeLite, it really is a great piece of software. Ah and by the way I'll report the obvious bugs to the issue tracker.

Cheers