关于 SAP HANA 开发那些事

简介: 关于 SAP HANA 开发那些事

SAP HANA 是为许多 SAP 产品提供支持的内部数据库。它是用 C++ 编写的,并带有 Python 测试,整个代码库位于单个 git 存储库中。来自世界各地的数百名开发人员正在开发约 1000 万行 C++ 代码和 1500 万行 Python 测试。

由于 HANA 专门部署在 Linux 上,因此许多开发人员也在他们的工作站上使用 Linux。到 2019 年为止,Windows 仍被支持作为开发环境,但 2019 年之后,Linux 成为唯一的选择。

编译 HANA 并不是一件容易的事。在本地机器上从头开始构建它预计需要大约 2 小时(如下所示),大约一半的 HANA 开发人员选择将工作站移至数据中心并远程访问,而不是在本地工作。

使用编译集群,构建时间减少到 16 分钟,而现在链接只需要一半的时间。现在我们仍在使用 gold 链接器,但在错误修复后 lld 应该会显着减少链接时间。

对于 HANA 开发,我们目前使用 C++14。唯一不寻常的事情是我们不使用 STL,而是有我们自己的实现 LTT,它强制使用分配器。

我们的构建系统围绕 cmake,因此使用起来相当合理。将 cpp 文件添加到 CMakeLists.txt 后,我们可以在本地运行单元测试并验证到目前为止没有任何问题。

更多细节可以查看这篇博客

另外关于 cmake 的介绍:

在深入探讨 CMake 的世界之前,我们需要明确一个事实:CMake 并不是一个构建系统,而是一个构建系统的生成器。它为多种平台和 IDE 编写统一的构建脚本,通过这些脚本生成特定于平台的构建文件。这意味着,无论您是在 Windows 上使用 Visual Studio,还是在 Linux 或 macOS 上使用 Make 或者其他构建工具,CMake 都能够帮助您简化构建过程。

CMake 通过使用名为 CMakeLists.txt 的文件来指导构建过程。在这个文件中,开发者可以指定项目的源文件、目标(可执行文件或库)、依赖关系以及其他构建参数。CMake 的设计哲学致力于支持跨平台构建,使得开发者能够使用相同的构建脚本在不同的系统上编译项目。

为了更好地理解 CMake 的强大功能,让我们通过一个简单的例子来展示如何使用 CMake 来构建一个简单的 C 语言项目。假设我们有一个项目,项目结构如下:

MyProject/
├── CMakeLists.txt
├── include/
│   └── mylib.h
└── src/
    ├── main.c
    └── mylib.c

在这个项目中,main.c 是主程序文件,mylib.cmylib.h 分别是一个简单的库的实现文件和头文件。我们希望构建一个可执行文件 myapp

CMakeLists.txt 的内容

要使用 CMake 构建这个项目,我们首先需要在 CMakeLists.txt 文件中定义构建规则:

cmake_minimum_required(VERSION 3.10) # 指定 CMake 的最低版本要求
project(MyProject VERSION 1.0) # 定义项目名称和版本
# 指定 C 语言标准
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED True)
# 添加 include 目录
include_directories(include)
# 定义要构建的可执行文件和相关的源文件
add_executable(myapp src/main.c src/mylib.c)

这段 CMakeLists.txt 做了几件事情:

  1. 指定了项目所需的最低 CMake 版本。
  2. 定义了项目的名称和版本号。
  3. 设置了 C 语言的标准版本。
  4. include 目录添加到了包含路径中,这样编译器就可以找到我们的头文件了。
  5. 最后,定义了一个目标可执行文件 myapp,并指定了它依赖的源文件。

构建项目

有了 CMakeLists.txt 文件后,我们可以使用 CMake 来生成构建文件,并构建我们的项目了。在命令行中,我们首先需要创建一个用于存放构建输出的目录(通常称为 build 目录),然后切换到这个目录中,使用 CMake 生成构建系统,最后编译项目:

mkdir build && cd build
cmake ..
make

这里,cmake .. 命令告诉 CMake 读取上级目录中的 CMakeLists.txt 文件,并基于这个文件生成 Makefile(如果您在使用 Windows 并选择了 Visual Studio 作为构建工具,这个命令将生成一个 .sln 解决方案文件)。make 命令则开始编译过程,最终生成 myapp 可执行文件。

CMake 的强大之处不仅仅在于它能够自动处理不同平台的构建系统差异,还在于它提供了丰富的命令和模块来支持复杂项目的构建。例如,通过使用 find_package 命令,CMake 可以定位并使用系统上已安装的库,而 target_link_libraries 命令可以用来指定构建目标需要链接的库。这些功能使得 CMake 成为一个非常强大且灵活的构建系统生成器,被广泛应用于各种大小的项目中。

在实际的项目开发中,CMake 的使用远远不止这些。高级特性,如导入和导出目标、生成导出配置文件、编写安装脚本等,都是 CMake 支持的功能,这些功能使得 CMake 不仅能够管理项目的构建过程,还能够帮助开发者打包和分发软件。通过学习和使用 CMake,开发者可以大大简化跨平台项目的构建和维护工作,提高软件开发的效率和质量。

相关文章
|
23天前
|
开发者 数据处理 数据管理
SAP HANA 的不同类型
SAP HANA 的不同类型
37 9
SAP HANA 的不同类型
|
23天前
|
SQL 数据库 索引
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
19 1
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
|
3月前
|
SQL 存储 数据可视化
SAP HANA 内存数据库不同类型的视图的应用场景介绍
SAP HANA 内存数据库不同类型的视图的应用场景介绍
56 0
|
3月前
|
供应链 BI 项目管理
SAP 业务顾问和开发顾问的各自职责
SAP 业务顾问和开发顾问的各自职责
49 0
|
23天前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
17 0
什么是 SAP HANA 内存数据库 的 Delta Storage
|
20天前
|
Java BI API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
15 0
|
23天前
|
数据库 SQL 应用服务中间件
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
22 0
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
|
3月前
|
存储 数据库
SAP HANA 数据库支持的几种不同类型的视图
SAP HANA 数据库支持的几种不同类型的视图
34 0
|
3月前
|
UED
SAP UI5 开发项目 package.json 文件里的 @sap/ux-specification 依赖
SAP UI5 开发项目 package.json 文件里的 @sap/ux-specification 依赖
20 0
|
5月前
|
SQL 存储 JavaScript
SAP HANA 详细介绍
SAP HANA 详细介绍
212 0