Modules
Simple C++20 module support for CMake
Install / Use
/learn @vitaut/ModulesREADME
Simple C++20 module support for CMake
Provides the add_module_library CMake function that is a wrapper around add_library with additional module-specific rules.
This module currently supports:
- Clang 15+
- GCC 11+
- MSVC 19.28+
This module can also fallback to a non-modular library for compatibility.
Projects using add_module_library:
- {fmt}: a modern formatting library
Example
hello.cc:
module;
#include <cstdio>
export module hello;
export void hello() { std::printf("Hello, modules!\n"); }
main.cc:
import hello;
int main() { hello(); }
CMakeLists.txt:
cmake_minimum_required(VERSION 3.11)
project(HELLO CXX)
include(modules.cmake)
add_module_library(hello hello.cc)
add_executable(main main.cc)
target_link_libraries(main hello)
Building with clang:
CXX=clang++ cmake .
make
Running:
$ ./main
Hello, modules!
License
The code is distributed under the permissive MIT license with an optional exception that allows distributing binary code without attribution.
Related Skills
openhue
343.3kControl Philips Hue lights and scenes via the OpenHue CLI.
sag
343.3kElevenLabs text-to-speech with mac-style say UX.
weather
343.3kGet current weather and forecasts via wttr.in or Open-Meteo
tweakcc
1.5kCustomize Claude Code's system prompts, create custom toolsets, input pattern highlighters, themes/thinking verbs/spinners, customize input box & user message styling, support AGENTS.md, unlock private/unreleased features, and much more. Supports both native/npm installs on all platforms.
