本仓库存储着使用 MSVC 工具链编译构建的常见 C++ 三方库。
版本:Visual Studio Community 2022 (64 位) 17.11.3
。
编译器工具集:v14
。
Visual Studio 版本之间的 C++ 存在二进制兼容性,自 Visual Studio 2015 到 2022。
引入库十分的简单,将仓库克隆到本地:
git clone https://github.com/Mq-b/CXX_LIB
然后定义变量 CMAKE_PREFIX_PATH
,值为仓库的路径,它是用来设置 CMake 查找包路径的。
Tip
建议将该变量定义在全局环境中,而非 CMakeLists.txt
文件中。这种方式更通用,便于开发者根据需要自行决定库的路径,避免硬编码路径的问题(例如和同事共享)。
可以定义在全局环境变量,或者是在 CMakeList.txt 中定义:
set(CMAKE_PREFIX_PATH "D:/CXX_LIB" CACHE STRING "自定义查找包的安装路径" FORCE)
定义环境变量查看是否生效:
PS C:\Users\A1387> $env:CMAKE_PREFIX_PATH
D:/CXX_LIB
做好这一步之后就可以直接在自己仓库随便的引入库了:
find_package(SFML 2.6.1 COMPONENTS system window graphics audio network REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE sfml-system sfml-window sfml-graphics sfml-audio sfml-network)
find_package(fmt CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE fmt::fmt-header-only)
find_package(TBB REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE TBB::tbb)
# 无法处理 Debug 这是库本身的问题
find_package(cpp-terminal REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE cpp-terminal::cpp-terminal)
find_package(spdlog REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE spdlog::spdlog_header_only)
find_package(nlohmann_json 3.2.0 REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE nlohmann_json::nlohmann_json)
find_package(GTest REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE GTest::GTest)
有些库还需设置 bin
环境变量或者直接将 dll
复制过来,因为是动态链接库,这不是 CMake 管理的。
-
用于构建跨平台的终端应用程序,支持终端输入输出控制(如颜色、光标控制,终端绘制图形)。
特点:现代 C++ 风格,简单易用,适用于需要与终端交互的应用。
-
跨平台的现代高效的字符串格式化库。
特点:支持类型安全的格式化,性能高,易于使用,广泛应用于 C++ 项目中。
-
Google 提供的跨平台 C++ 测试框架,用于单元测试。
特点:简洁的 API,支持断言和 Mock 测试,广泛用于自动化测试。
-
现代的跨平台 C++ JSON 解析与序列化库。
特点:提供 STL 容器风格的接口,易于使用,支持完整的 JSON 操作。
-
Intel 提供的跨平台并行编程库,帮助开发高性能多线程应用。
特点:支持任务调度、并行算法,适合多核计算和高性能计算应用。
-
用于 2D 图形、音频和窗口处理的跨平台多媒体库。
特点:易于使用,适合开发游戏或其他图形和多媒体应用。
-
跨平台的高性能 C++ 日志库,支持异步日志和多种输出方式。
特点:日志记录效率高,支持多种输出格式,适用于高并发环境。
Tip
除了 sfml,所有库都是本人自行源码编译构建。