在个人工程中使用OpenXLSX
在个人工程中使用OpenXLSX
Ding Ning介绍
OpenXLSX 是一个用于读取、编写、创建和修改 MicrosoftExcel 文件的 C + + 库,格式为.xlsx。
引入 OpenXLSX
OpenXLSX 可以被两种方式引入,分别是作为子项目集成进当前项目,以及全局安装为公共库并在此项目中引用
第一种方式适合需要修改 OpenXLSX 源码的情况,第二张方式适合 linux 或者 macos 系统。
集成进当前项目
下面这段话是 OpenXLSX 官方文档的机翻,简单描述了作为子项目集成进来的优点。
到目前为止,在您自己的项目中使用 OpenXLSX 最简单的方法是使用 CMake 自己,然后将 OpenXLSX 文件夹作为子目录添加到您自己项目的源代码树中。一些 IDE 支持 CMake 项目,最著名的是 Visual Studio 2019、 JetBrains CLion 和 Qt Creator。如果使用 VisualStudio,则必须在创建新项目时专门选择“ CMake project”。
将 OpenXLSX 库作为源子文件夹包含在内的主要好处是,不需要专门定位库和头文件; CMake 将为您解决这个问题。此外,库将使用与项目相同的配置(调试、发布等)来构建。特别是在 Windows 上,当 STL 对象通过库接口传递时,不可能在 Debug 项目中使用发布库(反之亦然) ,就像在 OpenXLSX 中一样。当包含 OpenXLSX 源代码时,这将不是一个问题。
通过在项目的 CMakeLists.txt 文件中使用 add _ subdirectory ()命令,您可以访问 OpenXLSX 的头文件和库文件。OpenXLSX 可以生成共享库或静态库。默认情况下,它将生成一个共享库,但是您可以在 OpenXLSX CMakeLists.txt 文件中更改该库。该库位于名为 OpenXLSX 的命名空间中; 因此该库的全名为 OpenXLSX: : OpenXLSX。
1、克隆代码至当前项目根目录
官方 github :
https://github.com/troldal/OpenXLSX?tab=readme-ov-file#integrating-into-a-cmake-project-structure
我的个人项目是 hnswlib ,项目位于
/home/hnswlib-master/OpenXLSX
因此我需要 cd 到项目根目录,然后执行克隆
git clone https://github.com/troldal/OpenXLSX.git OpenXLSX
2、修改项目的 CMakeLists.txt
这是官方文档给出的示例:
1 | cmake_minimum_required(VERSION 3.15) |
在 Linux 上,只需要修改这几项配置:
1 | add_subdirectory(OpenXLSX) |
作为公共库安装到本机
如果您希望生成 OpenXLSX 二进制文件并将其包含在您的项目中,可以使用 CMake 和您选择的编译器工具链来完成。
在 Linux 上,这种集成方式可能更简单。
1、克隆项目到本机
和上面方法一样,不过克隆的位置可以自行选择。
2、编译
在命令行中,导航项目根目录的 OpenXLSX 子目录,并执行以下命令:
1 | mkdir build |
最后执行编译指令。这将使用默认工具链配置项目。如果要指定工具链,请键入 cmake-G“ < toolchain >”。.使用 < toolchain > 作为您希望使用的工具链,例如“ Unix Makefile”、“ Ninja”、“ Xcode”或“ Visual Studio 162019”。有关详细信息,请参阅 CMake 文档。
直接使用以下命令构建库一般没有问题:
1 | cmake --build . --target OpenXLSX --config Release |
3、安装
构建结束后,使用以下命令安装:
1 | cmake --install . |
这个命令将把库和头文件安装到平台上的默认位置(通常是/usr/local/on Linux and MacOS,以及 C: Program Files on Windows)。可以使用—— prefix 参数设置不同的位置。
请注意,根据不同的平台,可能无法同时安装调试库和发布库。在 Linux 和 MacOS 上,这不是一个大问题,因为发布库可以用于调试和发布可执行文件。对于 Windows 来说则不是这样,在 Windows 中,库的配置必须与链接到库的可执行文件的配置相同。出于这个原因,在 Windows 上,将 OpenXLSX 源文件夹作为子目录包含到 CMake 项目中要容易得多,这将为您省去很多麻烦。
4、引入
在自己的项目中修改 CMAKE 配置,添加库依赖,具体指令如下:
1 | find_package(OpenXLSX REQUIRED) |
测试
官方给出的测试代码如下:
1 |
|
可以通过新建测试文件,来测试是否集成成功。
一些问题
c++ 版本
hnswlib 默认使用的 c++ 版本为 11 ,而 OpenXLSX 的编译版本为 17 。使用主项目的 11 版本进行编译会爆出很多 C++17 语言特性不支持的错误。
因此,需要手动修改 cmake 中的编译器语言版本为 17 。具体修改如下:
1 | # Examples and tests |
vsc 智能提示
如果在 VSC 中使用 OpenXLSX 库,可能会出现智能提示问题。
主要原因是 vsc 的智能提示在解析子项目的时候存在问题,这里可以通过添加引用路径的方式解决.具体修改如下
ctrl + shift + p 打开 C/C++: 编辑配置(UI)
找到 包含路径 项,添加下面这行路径
1 | ${workspaceFolder}/OpenXLSX/** |