Skip to content

C++ 安装与兼容性

qiuwenchen edited this page Aug 24, 2023 · 12 revisions

WCDB C++ 对于不同系统提供了不同安装方式。

Windows

基本要求

  • C++ 14 及以上
  • Windows XP及以上

通过 CMake 生成 Visual Studio 工程

安装 CMake

参考CMake安装教程下载安装:

安装 Git

参考Git官网下载安装

拉取 WCDB 源码

WCDB 包含了 sqlcipher 的子模块,因此也需对其进行更新。在命令行中执行:

git clone https://github.com/Tencent/wcdb.git
cd wcdb
git submodule update --init sqlcipher

生成VS工程

在 WCDB 代码的tools/version目录下,执行:

mkdir build
cd build
cmake ..

执行完之后可以在build文件夹下看到WCDB.sln,这就是 Virtual Studio 的工程了,用Virtual Studio打开即可编译WCDB。WCDB 公开的头文件在同目录的export_headers文件夹,编译生成的库文件也在当前目录下的Release或者Debug文件夹。

因为编译dll的检查机制更严格,而且模板比较难处理,现在WCDB只能编译成静态库,暂时不支持编译成dll。

Android

基本要求

  • C++ 14 及以上

通过 CMake 编译安装

安装 NDK和CMake

可参考 NDK和CMake官方安装教程进行安装

拉取 WCDB 源码

WCDB 包含了 sqlcipher 的子模块,因此也需对其进行更新。在命令行中执行:

git clone https://github.com/Tencent/wcdb.git
cd wcdb
git submodule update --init sqlcipher

编译

在 WCDB 代码的tools/version目录下,执行:

mkdir build
cd build
// 如果要编译 armeabi-v7a 架构就执行
cmake .. -DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_VERSION=21 -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DANDROID_NDK=/Path/To/NDK && cmake --build . -j8
// 如果要编译 arm64-v8a 架构就执行
cmake .. -DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_VERSION=21 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a -DANDROID_NDK=/Path/To/NDK && cmake --build . -j8

执行完之后可以在build文件夹下看到libWCDB.so,是可链接的二进制库文件,WCDB 公开的头文件在同目录的export_headers文件夹。

Linux

基本要求

  • C++ 14 及以上

通过 CMake 编译安装

安装 CMake

可以执行下面的命令安装,或者去CMake官网下载安装:

sudo apt install cmake

拉取 WCDB 源码

WCDB 包含了 sqlcipher 的子模块,因此也需对其进行更新。在命令行中执行:

git clone https://github.com/Tencent/wcdb.git
cd wcdb
git submodule update --init sqlcipher

编译

在 WCDB 代码的tools/version目录下,执行:

mkdir build
cd build
cmake .. && cmake --build . -j8

执行完之后可以在build文件夹下看到libWCDB.so,是可链接的二进制库文件,WCDB 公开的头文件在同目录的export_headers文件夹。

iOS/MacOS

基本要求

  • C++ 14 及以上
  • Xcode 12.0 及以上
  • 系统要求
    • iOS 11.0 及以上
    • macOS 10.13 及以上
    • tvOS 12.4 及以上
    • watchOS 6.0 及以上

通过 Cocoapods 安装

安装 Cocoapods 工具

可参考 Cocoapods 官方教程进行安装。

更新本地的 Cocoapods 缓存

在命令行中执行:

pod repo update

添加 Podfile 配置

在工程目录下创建 podfile 文件,并在对应 target 下添加 pod 'WCDB.cpp'use_frameworks!。以下是一份示例 podfile 文件:

platform :ios, '13.0'
use_frameworks!

target 'Sample' do
    pod 'WCDB.cpp'
end

然后在 podfile 同目录下命令行执行:

pod install --verbose

引入 WCDBC++

在项目中使用 Cocoapods 生成的 .xcworkspace 文件打开工程,并在需要使用 WCDB 的源代码文件头通过 #import <WCDBCpp/WCDBCpp.h> 引入即可。由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀.m改为.mm

通过 Carthage 安装

安装 Carthage 工具

可参考 Carthage 官方教程进行安装。

添加 cartfile 配置

在工程目录下创建 cartfile 文件,并添加 github "Tencent/WCDB"。以下是一份示例 cartfile 文件:

github "Tencent/WCDB"

编译生成动态库

在工程目录命令行执行:

carthage update --use-xcframeworks

对于不需要 bitcode 的开发者,可以指定 --configuration WithoutBitcode,以降低二进制的包大小。

完成后可以在 Carthage/Build 目录下找到生成的对应 iOS 或 macOS 平台动态库 WCDBCpp.xcframework

链入动态库

打开工程,并将对应 iOS 或 macOS 平台的动态库,拖入工程设置的 General -> Frameworks, Libraries, and Embedded Content 中。

以下是一份 iOS 平台工程的配置示例:

carthage_sample

引入 WCDBC++

需要使用 WCDB C++的源代码文件头通过 #import <WCDBCpp/WCDBCpp.h> 引入即可。由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀.m改为.mm

通过源码安装

获取 WCDB C++ 源码

WCDB 包含了 sqlcipher 的子模块,因此也需对其进行更新。在命令行中执行:

git clone https://github.com/Tencent/wcdb.git
cd wcdb
git submodule update --init sqlcipher

链入工程文件

wcdb/src 目录下的 WCDB.xcodeproj 拖入你的工程文件中,并在工程配置的 Build Phases -> Target Dependencies 中添加 WCDBCpp

链入动态库

Build Phases -> Link Binary With Librarires中添加WCDBCpp。再在 Build Phases 中,选择 + 选项,在弹出菜单中选择 New Copy Files Phase。然后将Destination设置为Frameworks,然后添加WCDBCpp

以下是一个完成链入的配置示例:

git_clone_sample

引入 WCDB C++

需要使用 WCDB C++的源代码文件头通过 #import <WCDBCpp/WCDBCpp.h> 引入即可。由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀.m改为.mm

Clone this wiki locally