Open-source project
eranif/codelite avatar
eranif/codelite

CodeLite: a CMake-built C/C++ IDE that also handles Rust, Python, Node.js and PHP

A multi purpose IDE specialized in C/C++/Rust/Python/PHP and Node.js. Written in C++

2,415 stars489 forksC++GPL-2.0

At a glance

What is it?
CodeLite is a GPL-2.0, cross-platform IDE distributed as pre-built binaries from codelite.org and built from source with CMake. It is a reasonable fit if you want one desktop editor for C++ and a few scripting languages, and a poor fit if you need a project model that is not CMake.
Who is it for?
Adopt CodeLite if you want a native desktop IDE for C or C++ that also opens Python, Node.js and PHP files, and if your build is already CMake or you are willing to keep a CMakeLists.txt next to your sources. Do not adopt it if your project is defined by another build system and you expect the IDE to read that definition directly, or if you need an editor whose extension API is the main way features get added.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What CodeLite solves, and who it is actually for

The README describes CodeLite as a free, open-source, cross-platform IDE focused on C, C++, Rust, Python, Node.js, and PHP development, running natively on Windows, macOS and Linux. That sentence is the whole scope. It is not a general-purpose editor with a plugin marketplace bolted on; it is a desktop application whose primary job is editing and building compiled code, with support for a few scripting languages alongside.

The target user is a developer who wants a native window, a project tree, a debugger and a build button without assembling those pieces from separate tools. The repository layout supports that reading: CodeLite/, LiteEditor/, Plugin/, Plugins/, sdk/, Interfaces/ and wxcrafter/ sit at the top level, alongside a CxxParser/ directory and a compilers.json file. This is a C++ application built on wxWidgets, with its own parser component rather than a thin wrapper around an external editor core.

Where it is the wrong tool is equally clear from that layout. There is no package manifest for an extension ecosystem, no marketplace directory, and no configuration format aimed at users who want to script their editor. If your workflow depends on configuring the editor itself as code, CodeLite asks you to work through its own project and workspace files instead.

The build system is the project model

The most consequential design decision visible in the repository is the presence of CMakeLists.txt at the top level and a cmake/ directory beside it. CodeLite's own source is built with CMake, and the IDE treats CMake as the way a project is described. That is a real constraint, not a cosmetic one: if your codebase is defined by a Makefile you wrote by hand, a Meson build, or a Bazel workspace, CodeLite will not read that definition and produce a configured project for you. You either add a CMakeLists.txt or you maintain the IDE's project file in parallel with your real build.

The upside of that constraint is that the IDE and your build agree on one description of the project. The downside is duplication for anyone whose build system is not CMake, and duplication is where IDE project files rot.

On the parsing side, the repository carries a CxxParser/ directory and a .clangd file at the top level, which indicates clangd is part of how code intelligence is delivered. The README does not document how clangd is invoked, whether it is bundled in the pre-built installers, or what happens when clangd is absent. That is a gap worth knowing about before you rely on completion and go-to-definition: the mechanism exists in the tree, but the README does not explain its configuration.

Installing CodeLite and setting it up for C++

The README points at a download page for pre-built binaries and at per-platform build guides if you prefer to compile from source. It does not print install commands, so the exact package names and the exact installer file names are not something this article can state. What follows is the shape of the process, not a transcript of commands the README gives.

If you build from source on Linux, the documented entry point is the build guide linked from the README, and the repository's top level contains a build.sh alongside CMakeLists.txt. The README does not state the required CMake version, the wxWidgets version, or the list of development packages, so treat the first configure as the step that tells you what is missing rather than expecting a clean run.

Once the IDE is running, the first real use is creating a workspace and a project. The documentation linked from the README is the authority on the dialogs; the README itself does not walk through them. What the README does commit to is the language scope, so a first project in C or C++ is the intended path. After the build, the expected result is a binary in the project's build directory and a compiler output pane inside the IDE. If you want completion and navigation to work well, the compile_commands.json that CMake can emit is the artifact to check for, because that is what clangd consumes. The README does not document that wiring, so verify it yourself rather than assuming it is automatic.

Where CodeLite stops being the right answer

The clearest limitation is the project model. CMake is the supported description, and the repository gives no sign of first-class importers for other build systems. A team with a large Meson or Bazel build will spend its time keeping the IDE's view of the project in sync with reality, and that sync work has no end date.

The second limitation is documentation depth in the repository itself. The README is short. It links to docs.codelite.org for tutorials and an API reference, and it links to platform-specific build guides, but it does not document configuration keys, clangd setup, or troubleshooting. Anyone evaluating CodeLite from the GitHub page alone will come away knowing the language list and the download link and very little else.

The third is the language list itself. Rust, Python, Node.js and PHP are named in the README, but the repository's own machinery is a C++ parser and a clangd configuration. Nothing in the README describes dedicated tooling for those four languages, so it is safer to read them as editing support than as the same depth of integration C and C++ receive. If your work is mostly Python or mostly Node.js, an editor built around those ecosystems will fit better.

CodeLite compared with VS Code and Code::Blocks

The two comparisons people search for are CodeLite vs VS Code and CodeLite vs Code::Blocks, and the differences are structural rather than a matter of taste.

VS Code is an Electron application whose features largely arrive as extensions, and whose project understanding comes from language servers and workspace settings. CodeLite is a native wxWidgets application with its own C++ parser component in CxxParser/ and a plugin directory in Plugins/. The practical difference: with VS Code you assemble a C++ environment from a C/C++ extension, a CMake extension and a debug configuration; with CodeLite the C++ support is the application. That cuts both ways. You get a coherent default experience and you get less freedom to replace the parts you dislike.

Code::Blocks is the closer comparison, since it is also a native C++ IDE. The README does not describe Code::Blocks internals, so the honest statement is that both occupy the same niche and the decision between them will come down to which one's project handling matches your build. What can be said from this repository is that CodeLite's own build is CMake-driven and its tree contains clangd configuration, which places it closer to the modern CMake plus clangd workflow than to an IDE with its own compiler abstraction.

Maintenance, releases and what GPL-2.0 means here

The last push to the default branch was on 2026-09-28, and the most recent release listed is 18.5.0 on 2026-09-21. Before that, 18.4.0 landed on 2026-06-13 and 18.3.0 on 2026-03-15. The spacing suggests a release cadence of roughly one minor version per quarter, with the repository receiving commits between releases. The repository is not archived.

That cadence matters for upgrade cost. If you install a pre-built binary, upgrading means replacing it and re-checking any settings you changed, and the README does not document a migration or rollback path for settings between versions. If you build from source, each upgrade means re-running the CMake configure and build against whatever toolchain you have, and the README does not promise source compatibility for anything under sdk/ or Interfaces/. The docs site is where build guidance lives, so a source-based workflow depends on that site staying current.

The licence is GPL-2.0, with COPYING and LICENSE files at the top level and a codelite.spec for packaging. The practical consequence for most users is nil: running the IDE and building your own code with it does not change your code's licence. The consequence that matters is for anyone who wants to take CodeLite's source, modify it, and ship the result. GPL-2.0 carries obligations in that case, and how those obligations apply to a specific distribution is a question for a lawyer, not for this article.

Editorial conclusion

Adopt CodeLite if you want a native desktop IDE for C or C++ that also opens Python, Node.js and PHP files, and if your build is already CMake or you are willing to keep a CMakeLists.txt next to your sources. Do not adopt it if your project is defined by another build system and you expect the IDE to read that definition directly, or if you need an editor whose extension API is the main way features get added. Before committing, verify three things on your own machine: that the pre-built binary for your platform installs and starts, that code intelligence works against your project once clangd is configured, and that the terms of GPL-2.0 suit how you intend to redistribute anything you build from the source tree.

Frequently asked questions

What is CodeLite used for?

It is an IDE for writing and building software, with C, C++, Rust, Python, Node.js and PHP named as the supported languages. It runs natively on Windows, macOS and Linux.

Is CodeLite any good?

That depends on whether its project model matches yours. The repository shows a CMake-driven build and a clangd configuration, which suits C and C++ projects described with CMake; the README does not document importers for other build systems.

How do I install CodeLite?

The README points to a download page for pre-built binaries and to per-platform build guides if you compile from source. It does not print package names or installer commands, so the download page and the docs site are the places to start.

Is CodeLite safe?

The repository is not archived, the last push was on 2026-09-28, and the source is published under GPL-2.0 with the licence files at the top level. Beyond that, safety is a question about the specific binary you download, and the README only directs you to the project's own download page.

How do I set up CodeLite for C++?

Create a project in the IDE and describe it with CMake, since CMakeLists.txt is how CodeLite's own source is built and the repository carries clangd configuration for code intelligence. The README does not document the dialog sequence, so the docs site is the reference.

Official sources

  1. eranif/codelite on GitHub
  2. License: GPL-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/eranif-codelite.svg)](https://hysenlabs.com/projects/eranif-codelite)