LikesProgram 是一个 C++20 基础组件库。它采用“Core + 可选扩展包”的结构:先提供稳定、轻量、无第三方重依赖的公共基础能力,再按功能域拆成日志、配置、指标、线程、网络等独立包。
当前版本可用的模块有:
| 模块 | CMake target | 默认构建 | 用途 | 手册 |
|---|---|---|---|---|
| LikesProgramCore | LikesProgram::Core |
是 | Unicode 字符串、格式化、时间、状态返回、平台信息、字节视图等基础能力 | packages/LikesProgramCore/README.md |
| LikesProgramLogging | LikesProgram::Logging |
否,需要手动开启 | 异步日志、控制台/文件输出、结构化 JSON Lines、上下文字段、失败重试、多进程文件写入、运行时配置与诊断 | packages/LikesProgramLogging/README.md |
| LikesProgramConfig | LikesProgram::Config |
否,需要手动开启 | key=value、JSON、YAML、TOML、值树、类型安全读取、默认值回退和 Schema 校验 |
packages/LikesProgramConfig/README.md |
| LikesProgramMetrics | LikesProgram::Metrics |
否,需要手动开启 | Counter、Gauge、Histogram、Summary、Registry 与 Prometheus/JSON 导出 | packages/LikesProgramMetrics/README.md |
| LikesProgramThreading | LikesProgram::Threading |
否,需要手动开启 | ThreadPool、有界队列、拒绝策略、关闭策略、统计快照与观察者事件 | packages/LikesProgramThreading/README.md |
| LikesProgramNet | LikesProgram::Net |
否,需要手动开启 | TCP/UDP Server/Client、EventLoop、Connection、可继承 TcpTransport/UdpTransport 与用户自定义 TLS/SSL 扩展点 | packages/LikesProgramNet/README.md |
首轮未纳入新架构的能力已在 legacy/README.md 中登记边界;未来如需恢复,应重新按独立包规则设计、实现和验收。
当前版本是 1.0.0。
在程序里可以通过 Core 提供的版本 API 读取当前库版本:
#include <LikesProgram/Core/Version.hpp>
auto info = LikesProgram::Version::Current();
auto text = LikesProgram::Version::CurrentString(); // "1.0.0"
if (LikesProgram::Version::IsAtLeast(1, 0, 0)) {
// 当前版本至少是 1.0.0
}扩展包也提供包名、版本和可用性检查,便于二次开发时输出诊断信息:
#include <LikesProgram/Logging/Logging.hpp>
#include <LikesProgram/Config/Config.hpp>
#include <LikesProgram/Metrics/Metrics.hpp>
#include <LikesProgram/Threading/Threading.hpp>
#include <LikesProgram/Net/Net.hpp>
const char* loggingVersion = LikesProgram::Logging::PackageVersion();
const char* configVersion = LikesProgram::Config::PackageVersion();
const char* metricsVersion = LikesProgram::Metrics::PackageVersion();
const char* threadingVersion = LikesProgram::Threading::PackageVersion();
const char* netVersion = LikesProgram::Net::PackageVersion();- CMake 3.15 或更新版本。
- 支持 C++20 的编译器。
- Windows 推荐 Visual Studio 2022 MSVC;Linux/macOS 推荐 GCC 11+ 或 Clang 14+。
当前源码没有引入第三方库。Core、Logging、Config、Metrics、Threading、Net 都只依赖 C++ 标准库和系统 API;Net 只提供可继承的 TCP/UDP transport 扩展点,TLS/SSL 由用户派生实现,不链接 OpenSSL。
首轮 1.0 版本不迁入宽泛 Math 聚合、Vector 系列或半成品 TLS Context Manager。PercentileSketch 已作为 Metrics 私有实现服务 Summary,不作为公共 Math API 导出。
Windows PowerShell:
cd C:\Users\TX2\Desktop\LikesProgramProjects\LikesProgram
cmake -S . -B build -DLIKESPROGRAM_BUILD_LOGGING=ON -DLIKESPROGRAM_BUILD_CONFIG=ON -DLIKESPROGRAM_BUILD_METRICS=ON -DLIKESPROGRAM_BUILD_THREADING=ON -DLIKESPROGRAM_BUILD_NET=ON
cmake --build build --config Debug
ctest --test-dir build --output-on-failure -C DebugLinux/macOS:
cd /path/to/LikesProgram
cmake -S . -B build -DLIKESPROGRAM_BUILD_LOGGING=ON -DLIKESPROGRAM_BUILD_CONFIG=ON -DLIKESPROGRAM_BUILD_METRICS=ON -DLIKESPROGRAM_BUILD_THREADING=ON -DLIKESPROGRAM_BUILD_NET=ON
cmake --build build
ctest --test-dir build --output-on-failure说明:
Core总是构建。Logging默认不构建,想使用日志包必须传入-DLIKESPROGRAM_BUILD_LOGGING=ON。Config默认不构建,想使用配置包必须传入-DLIKESPROGRAM_BUILD_CONFIG=ON。Metrics默认不构建,想使用指标包必须传入-DLIKESPROGRAM_BUILD_METRICS=ON。Threading默认不构建,想使用线程池包必须传入-DLIKESPROGRAM_BUILD_THREADING=ON。Net默认不构建,想使用 TCP/UDP 网络包必须传入-DLIKESPROGRAM_BUILD_NET=ON。- 测试由
LIKESPROGRAM_BUILD_TESTS控制,默认ON。 - 示例和 benchmark 由
LIKESPROGRAM_BUILD_EXAMPLES控制,默认ON。 - 发布诊断工具由
LIKESPROGRAM_BUILD_TOOLS控制,默认ON。
| 选项 | 默认值 | 作用 |
|---|---|---|
LIKESPROGRAM_BUILD_SHARED |
ON |
ON 构建动态库,OFF 构建静态库 |
LIKESPROGRAM_BUILD_TESTS |
ON |
构建并注册测试目标 |
LIKESPROGRAM_BUILD_EXAMPLES |
ON |
构建示例程序和 benchmark |
LIKESPROGRAM_BUILD_TOOLS |
ON |
构建并安装发布诊断工具 |
LIKESPROGRAM_BUILD_LOGGING |
OFF |
构建 Logging 扩展包 |
LIKESPROGRAM_BUILD_CONFIG |
OFF |
构建 Config 扩展包 |
LIKESPROGRAM_BUILD_METRICS |
OFF |
构建 Metrics 扩展包 |
LIKESPROGRAM_BUILD_THREADING |
OFF |
构建 Threading 扩展包 |
LIKESPROGRAM_BUILD_NET |
OFF |
构建 Net 扩展包,提供 TCP/UDP 与可继承安全层扩展点 |
开启 LIKESPROGRAM_BUILD_TESTS=ON 后会注册:
LikesProgramCoreTests
LikesProgramLoggingTests # 仅在 LIKESPROGRAM_BUILD_LOGGING=ON 时存在
LikesProgramConfigTests # 仅在 LIKESPROGRAM_BUILD_CONFIG=ON 时存在
LikesProgramMetricsTests # 仅在 LIKESPROGRAM_BUILD_METRICS=ON 时存在
LikesProgramThreadingTests # 仅在 LIKESPROGRAM_BUILD_THREADING=ON 时存在
LikesProgramNetTests # 仅在 LIKESPROGRAM_BUILD_NET=ON 时存在
开启 LIKESPROGRAM_BUILD_EXAMPLES=ON 后会生成:
LikesProgramCoreExample
LikesProgramCoreBenchmark
LikesProgramLoggingExample # 仅在 LIKESPROGRAM_BUILD_LOGGING=ON 时存在
LikesProgramLoggingBenchmark # 仅在 LIKESPROGRAM_BUILD_LOGGING=ON 时存在
LikesProgramConfigExample # 仅在 LIKESPROGRAM_BUILD_CONFIG=ON 时存在
LikesProgramMetricsExample # 仅在 LIKESPROGRAM_BUILD_METRICS=ON 时存在
LikesProgramThreadingExample # 仅在 LIKESPROGRAM_BUILD_THREADING=ON 时存在
LikesProgramNetExample # 仅在 LIKESPROGRAM_BUILD_NET=ON 时存在
这些示例就是当前 API 的可编译使用样本。README 负责解释“怎么用”和“为什么这样用”,examples/tests 负责证明代码真的能编译运行。
推荐方式是先安装,然后在外部项目里使用 find_package。
cmake_minimum_required(VERSION 3.15)
project(MyApp LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
find_package(LikesProgram CONFIG REQUIRED)
add_executable(MyApp main.cpp)
target_link_libraries(MyApp
PRIVATE
LikesProgram::Core
LikesProgram::Logging
LikesProgram::Config
LikesProgram::Metrics
LikesProgram::Threading
LikesProgram::Net
)配置外部项目时告诉 CMake 安装目录:
cmake -S . -B build -DCMAKE_PREFIX_PATH=C:\LikesProgramInstall
cmake --build build --config Release只需要字符串、时间、状态返回、平台信息:链接 LikesProgram::Core。
需要写日志:构建时打开 -DLIKESPROGRAM_BUILD_LOGGING=ON,然后链接 LikesProgram::Logging。
需要读取配置文件:构建时打开 -DLIKESPROGRAM_BUILD_CONFIG=ON,然后链接 LikesProgram::Config。
需要记录运行时指标:构建时打开 -DLIKESPROGRAM_BUILD_METRICS=ON,然后链接 LikesProgram::Metrics。
需要线程池:构建时打开 -DLIKESPROGRAM_BUILD_THREADING=ON,然后链接 LikesProgram::Threading。
需要 TCP/UDP 网络:构建时打开 -DLIKESPROGRAM_BUILD_NET=ON,然后链接 LikesProgram::Net。Net 支持 Server / Client 选择 TransportKind::Tcp 或 TransportKind::Udp;TLS/SSL 由用户继承 TcpTransport 或 UdpTransport,重写安全层初始化、升级、握手和读写函数,并通过 factory 注入。
需要用配置驱动日志:同时打开 LIKESPROGRAM_BUILD_CONFIG 和 LIKESPROGRAM_BUILD_LOGGING,应用层读取配置后映射到 Logging 的开放式 LoggerConfig。Logging 包自身仍只依赖 Core,不会反向依赖 Config。
LikesProgram 对外提供 C++ API。C++ ABI 受编译器、标准库、运行库、架构、Debug/Release 配置影响。
请保持以下条件一致:
- 同一编译器系列和版本范围。
- 同一 C++ 标准,当前是 C++20。
- 同一运行库设置。
- 同一 CPU 架构。
- 同一 Debug/Release 配置。
跨工具链使用时建议从源码重新构建,避免运行库和标准库 ABI 不一致带来的链接或运行问题。
LikesProgram::String 内部统一保存 UTF-16。对外可以从 UTF-8、UTF-16、UTF-32、std::wstring、GBK 等来源构造,并可再转回对应编码。
建议:
- 新代码优先使用 UTF-8 源文本或
u"..."UTF-16 字面量。 - 日志和配置里的文本都使用
LikesProgram::String。 - 非法 UTF-8/UTF-16/UTF-32 输入会按严格策略抛出异常,调用外部输入时要在边界处处理异常。
历史工程声明 LikesProgram 使用 Apache License 2.0。你可以在遵守 Apache License 2.0 条款的前提下使用、复制、修改和分发本项目,也可以用于商业项目。
需要注意:
- 保留原始版权声明和许可证声明。
- 修改后的文件应标注修改。
- 不得使用作者、项目名或贡献者名义为衍生项目背书。
- 本项目按“现状”提供,不承诺适用性、稳定性或安全性。
- 第三方依赖如果未来引入,仍受其各自许可证约束。
如果你的源码包或安装包中随附了 LICENSE、NOTICE 等文件,请以这些文件为准查看完整授权文本和声明信息。