用build2+VS2017编译ODB: C++ Object-Relational Mapping (ORM)

时间:2022-11-30 16:57:44

ODB

https://www.codesynthesis.com/products/odb/

安装build2-toolchain

或使用开发库 https://stage.build2.org/0/ 。参考The build2 Toolchain Installation and Upgrade (MSVC)进行安装。
在”x64 Native Tools Command Prompt for VS 2017”窗口:

  1. 复制已下载的文件到C:\build2-build\并校验

    cd /d C:\build2-build
    type *.sha256
    for %f in (*.zip *.xz) do certutil -hashfile %f SHA256

  2. 解压build2-baseutils-*-x86_64-windows.zip到C:\build2\,验证tar路径

    set PATH=C:\build2\bin;%PATH%
    where tar

  3. 解压build2-mingw-*-x86_64-windows.tar.xz到C:\build2\,验证g++路径

    tar -xJf build2-mingw-*-x86_64-windows.tar.xz --one-top-level=C:\build2 --strip-components=1
    where g++

  4. 解压build2-toolchain-*.tar.xz到C:\build2-build\,运行批处理文件安装

    tar -xJf build2-toolchain-*.tar.xz
    cd build2-toolchain-*
    .\build-msvc.bat --trust yes

准备Git库


mkdir D:\prj\odb
cd /d D:\prj\odb

代码库主要在以下两处
- https://git.build2.org/cgit/
- https://git.codesynthesis.com/cgit/

git clone以下代码库到D:\prj\odb
- libodb
https://git.codesynthesis.com/odb/libodb.git
- libmysqlclient
https://git.build2.org/packaging/mysql/libmysqlclient.git
- libmariadb
https://git.build2.org/packaging/mariadb/libmariadb.git
- libcutl
https://git.codesynthesis.com/libcutl/libcutl.git
- cli
https://git.codesynthesis.com/cli/cli.git
- libodb-mysql
https://git.codesynthesis.com/odb/libodb-mysql.git
- libstudxml
https://git.codesynthesis.com/libstudxml/libstudxml.git
- odb
https://git.codesynthesis.com/odb/odb.git

编译Common Runtime Library(libodb)

在”x64 Native Tools Command Prompt for VS 2017”窗口

set PATH=C:\build2\bin;%PATH%
cd /d D:\prj\odb\
ECHO ===== Building libodb-vs2017
mkdir libodb-vs2017
b config.cxx=cl config.cc.coptions="/O2" config.install.root="install/libodb-vs2017/" "configure(libodb/@libodb-vs2017/)"
cd libodb-vs2017
b install
cd ..

编译libmysqlclient(编译libodb-mysql需要)

在”x64 Native Tools Command Prompt for VS 2017”窗口

ECHO ===== Building libmysqlclient-vs2017
mkdir libmysqlclient-vs2017
b config.cxx=cl config.cc.coptions="/O2 /wd4819" "configure(libmysqlclient/@libmysqlclient-vs2017/)"
b libmysqlclient-vs2017/

编译libmariadb(编译libodb-mysql需要)

在”x64 Native Tools Command Prompt for VS 2017”窗口

ECHO ===== Building libmariadb-vs2017
mkdir libmariadb-vs2017
b config.cxx=cl config.cc.coptions="/O2 /wd4819" "configure(libmariadb/@libmariadb-vs2017/)"
b libmariadb-vs2017/

安装libcutl(安装cli需要)

在”x64 Native Tools Command Prompt for VS 2017”窗口

ECHO ===== Installing libcutl-vs2017
mkdir libcutl-vs2017
b config.cxx=cl config.install.root=C:\build2 config.cc.coptions="/O2" "configure(libcutl/@libcutl-vs2017/)"
cd libcutl-vs2017/
b install
cd ..

安装cli(编译libodb-mysql需要)

在”x64 Native Tools Command Prompt for VS 2017”窗口

ECHO ===== Installing cli-vs2017
mkdir cli-vs2017
b config.cxx=cl config.install.root=C:\build2 config.cc.coptions="/O2" config.import.libcutl=libcutl-vs2017/ "configure(cli/@cli-vs2017/)"
cd cli-vs2017
b install
cd ..

编译Database Runtime Libraries for MySQL(libodb-mysql)

  1. 使用libmysqlclient

    ECHO ===== Building libodb-mysql-vs2017
    mkdir libodb-mysql-vs2017
    cd libodb-mysql
    git checkout -f master --
    cd ..
    b config.cxx=cl config.cli=C:\build2\bin\cli.exe config.cc.coptions="/O2" config.import.libmysqlclient=libmysqlclient-vs2017/ config.import.libodb=libodb-vs2017/ config.install.root="install/libodb-mysql-vs2017/" "configure(libodb-mysql/@libodb-mysql-vs2017/)"
    cd libodb-mysql-vs2017
    b install
    cd ..

  2. 使用libmariadb,要创建git分支mariadb做以下修改
    2.1. 修改manifest

    -depends: libmysqlclient ^5.0.3
    +depends: libmariadb ^10.2.2

    2.2. 修改odb\mysql\buildfile

    -client_lib = 'mysql'
    -#client_lib = 'mariadb'
    +#client_lib = 'mysql'
    +client_lib = 'mariadb'

    2.3. 在”x64 Native Tools Command Prompt for VS 2017”窗口

    ECHO ===== Building libodb-mariadb-vs2017
    mkdir libodb-mariadb-vs2017
    cd libodb-mysql
    git checkout -f mariadb --
    cd ..
    b config.cxx=cl config.cli=C:\build2\bin\cli.exe config.cc.coptions="/O2" config.import.libmariadb=libmariadb-vs2017/ config.import.libodb=libodb-vs2017/ config.install.root="install/libodb-mariadb-vs2017/" "configure(libodb-mysql/@libodb-mariadb-vs2017/)"
    cd libodb-mariadb-vs2017
    b install
    cd ..

编译libstudxml(安装odb需要)

在”x64 Native Tools Command Prompt for VS 2017”窗口

ECHO ===== Building libstudxml-vs2017
mkdir libstudxml-vs2017
b config.cxx=cl config.cc.coptions="/O2" "configure(libstudxml/@libstudxml-vs2017/)"
b libstudxml-vs2017/

安装ODB Compiler(odb)

目前ODB compiler代码编译暂不可用。下载旧版本odb-2.4.0-i686-windows.zip解压安装即可。
在”x64 Native Tools Command Prompt for VS 2017”窗口

ECHO ===== Installing odb-vs2017
mkdir odb-vs2017
b config.cxx=cl config.cli=C:\build2\bin\cli.exe config.cc.coptions="/O2" config.import.libstudxml=libstudxml-vs2017/ config.import.libcutl=libcutl-vs2017/ "configure(odb/@odb-vs2017/)"
cd odb-vs2017
b install
cd ..