Crascit /
DownloadProject
This repository is no longer maintained. Use the FetchContent module available in CMake 3.11 or later instead.
30/100 healthLoading repository data…
SystemFromScratch-Articles / repository
This repository is a small training project that explains how a Zephyr-like configuration flow can be built from simple pieces.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
This repository is a small training project that explains how a Zephyr-like configuration flow can be built from simple pieces.
It demonstrates how to connect:
menuconfig via kconfig-frontends.config and autoconf.h outputsThe project is intentionally minimal. Its purpose is not to replace Zephyr, but to help understand the mechanics behind a Kconfig-driven embedded build flow.
This repository is useful if you want to learn:
menuconfig is launched from a build system.config is turned into compile-time macrosKconfig-System-with-CMake/
├── CMakeLists.txt
├── Kconfig
├── prj.conf
├── src/
│ └── main.c
└── cmake/
└── kconfig.cmake
KconfigDefines the configuration symbols exposed to the user:
mainmenu "Demo Project Configuration"
config DEMO_FEATURE
bool "Enable demo feature"
default y
config DEMO_VALUE
int "Demo integer value"
default 42
In this demo:
DEMO_FEATURE is a boolean switchDEMO_VALUE is an integer parameterprj.confProvides the base project configuration used as the default input for Kconfig processing.
In the current version of this training project, prj.conf is effectively the authoritative configuration source for the build.
This is an important educational detail:
menuconfig can modify the generated build/.config.config from prj.confprj.conf win on the next rebuildFor example, if you change CONFIG_DEMO_VALUE to 50 in menuconfig, that value may appear in build/.config for a moment. However, once the project rebuilds, the current CMake flow regenerates .config from prj.conf, so the value returns to 45.
This behavior is intentional in this demo because it makes the configuration flow easier to understand: prj.conf acts as the stable project-level input, while .config is treated as a generated build artifact.
Current defaults:
CONFIG_DEMO_FEATURE=y
CONFIG_DEMO_VALUE=45
cmake/kconfig.cmakeImplements the glue layer between Kconfig and CMake:
kconfig-conf and kconfig-mconfmenuconfig target.configinclude/autoconf.hsrc/main.cConsumes the generated configuration header at compile time and prints the selected values.
This example was prepared for a Linux environment with kconfig-frontends installed.
On Ubuntu or Debian-based systems:
sudo apt install kconfig-frontends libncurses-dev cmake ninja-build
Required tools:
cmakeninjakconfig-confkconfig-mconfIf you are working on Windows, the simplest and most reliable setup is WSL with Ubuntu.
At the time of writing, standard MSYS2 repositories do not provide the Linux kconfig-frontends package with the kconfig-conf and kconfig-mconf tools used by this project. MSYS2 has packages named kconfig, but those refer to KDE KConfig and are not the same thing.
Practical recommendation:
menuconfig setup for this exampleConfigure the build directory:
cmake -B build -G Ninja
Open the text UI:
ninja -C build menuconfig
Build the demo application:
ninja -C build
Run the executable:
./build/demo
With the current default configuration, the program prints:
Feature enabled!
Value: 45
If you change the value in menuconfig, rebuild, and run again, the output should reflect the updated configuration.
Kconfig defines the available symbols.prj.conf provides initial values.kconfig-conf generates a build-local .config file.kconfig-mconf provides the interactive menuconfig UI..config into build/include/autoconf.h.autoconf.h and uses the generated macros.This mirrors the general idea used by Zephyr, but in a deliberately reduced form.
After configuration and build, the important generated files are:
build/
├── .config
└── include/
└── autoconf.h
autoconf.h is generated manuallyOne important training point in this repository is that Ubuntu kconfig-frontends generates .config, but does not automatically generate autoconf.h in the way many users expect from Linux or Zephyr-based flows.
To close that gap, this project adds a simple conversion step in CMake.
menuconfig needs terminal support, which is why USES_TERMINAL matters in CMake.Try the following to understand the system better:
DEMO_FEATURE in menuconfig and rebuildDEMO_VALUE to a different integer and verify the runtime outputbuild/.config after saving in menuconfigbuild/include/autoconf.h after rebuildingsrc/main.cThis demo keeps the implementation intentionally small. It does not try to cover:
choice blocksThis is not Zephyr code and not a drop-in replacement for the Zephyr build system.
It is a teaching example inspired by the same general ideas:
menuconfigSource code in this repository is licensed under the MIT License. See LICENSE.
If you publish an accompanying article or long-form documentation for this project, you can license the text separately under Creative Commons Attribution 4.0 International (CC BY 4.0). See ARTICLE-LICENSE.md for a ready-to-use note.
Selected from shared topics, language and repository description—not editorial ratings.
Crascit /
This repository is no longer maintained. Use the FetchContent module available in CMake 3.11 or later instead.
30/100 healthJanWilczek /
A template repository that you can use for creating audio plugins with the JUCE C++ framework. It is based on CMake, uses CPM package manager, the JUCE C++ framework (obviously), and the GoogleTest framework. All of these are easy to change on demand. You can also base off your new repo off this template because the setup is very simple.
83/100 healthsomcosoftware /
The goal of this repository is to show more complex example of awesome qt_add_qml_module() CMake function
56/100 healthElkinmt19 /
This is a repository to learn and get more computer vision skills, make robotics projects integrating the computer vision as a perception tool and create a lot of awesome advanced controllers for the robots of the future.
47/100 healthibra-kdbra /
A C/C++ playground for exploring diverse concepts like algorithms, game engines, CMake, and more. This evolving repository is a space for experimentation, designed to deepen understanding of C++ while encouraging growth and innovation.
43/100 healthids-imaging /
IDS peak is the ideal complement for your new machine vision applications with uEye+ industrial cameras. This repository contains a series of programming examples to familiarize yourself with the API functions of the various IDS peak libraries.
73/100 health