Langulus::Core
is a common header-only C++23 library, that is used in all other Langulus libraries and plug-ins.
It takes care of the four main aspects of the framework:
- Configuration -
LangulusCore
is a CMakeINTERFACE
target that serves as a common configurator for all other targets - it includes global compiler flags and options. - Type Navigation - patterns defined in the
Langulus
namespace, that are used practically everywhere. By type-navigation we mean things analogical tostd::remove_reference_t
, but improved and designed specifically with Langulus use cases in mind. - Basic concepts - the
Langulus::CT
namespace is theCT
concept library, containing some rudimentary and widely used concepts. - Utilities - defined in the
Langulus
namespace. Contain various widely used types and functions.
You wish to use some of the utilities or concept library for yourself without downloading the entire Langulus framework? You can use this library on its own. If you have CMake 3.28+, the recommended way to get it is to add this to your CMakeLists.txt:
include(FetchContent)
FetchContent_Declare(LangulusCore GIT_REPOSITORY https://github.com/Langulus/Core.git GIT_TAG main EXCLUDE_FROM_ALL)
FetchContent_MakeAvailable(LangulusCore)
Then just link to your target to get all the include directories:
target_link_libraries(YourLibrary PUBLIC LangulusCore)
Alternatively, you can always just download and copy the headers.
Langulus is still heavily under development, and is by nature highly experimental. There could be numerous breaking changes, renames, design overhauls, etc. coming in the future. Our design is led by practice - as more features are added to Langulus, more things will be requalified as 'common' and worthy of being moved to Langulus::Core.
I would love feedback and suggestions, please feel free to join the forum. However it should be stated clearly, that Langulus is primarily a personal project that I've been developing for over 10 years, and is aiming primarily at satisfying my requirements. As such, ideas and suggestions may not be necessarily implemented by me, unless I find them exceedingly useful. If you really need me to add or improve something that isn't on my daily agenda, you should consider sponsoring me.