GitHub - vitaut/modules: 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:
Running:
License
The code is distributed under the permissive MIT license with an optional exception that allows distributing binary code without attribution.