关于sap:关于-SAP-HANA-开发那些事

6次阅读

共计 2195 个字符,预计需要花费 6 分钟才能阅读完成。

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,开发者能够大大简化跨平台我的项目的构建和保护工作,进步软件开发的效率和品质。

正文完
 0