libxlsxwriter - 编译

2023-12-16 12:10:31

libxlsxwriter - 编译

概述

想换一个新版的libxlsxwriter, 自己编译一个出来.
libxlsxwriter依赖zlib, 前面已经成功编译了zlib(zlib - 编译).

笔记

libxlsxwriter的库地址 : https://github.com/jmcnamara/libxlsxwriter.git
迁出到本地
切换到最新的发布版本.
在这里插入图片描述
在这里插入图片描述

编译环境

VS2019 16.11.32
CMAKE version 3.20.21032501-MSVC_2
ZLIB v1.3

编译思路

官方工程中, 并没有对编译过程做详细说明.
这时, 可以看的就是工程自带的CMakeLists.txt 和CMake的官方帮助(https://cmake.org/cmake/help/v3.28/search.html?q=find_package)
在这里插入图片描述
在官方资料中搜索之前, 指定和自己用的CMake差不多的版本.

编译

打开命令行 ‘x64 Native Tools Command Prompt for VS 2019’
进入libxlsxwriter在本地的迁出目录.

cd /d D:\3rd_prj\excel\libxlsxwriter

建立一个编译用的目录并进入

mkdir .\build
cd /d .\build

在工程根目录建立zlib文件夹, 用于放置编译依赖的zlib组件. 主要是用到了存根.lib

mkdir ..\zlib

将自己编译的zlib组件拷贝过去, 最主要就是存根.lib, 这样VS工程就能建立.
其他缺啥, 等打开VS2019工程后, 缺啥补啥, 可以自己改配置.
在这里插入图片描述
CMakeLists.txt 中要找(find_package)的zlib包叫做zlib, 所以要将自己编译的存根.lib(my_zlib_1d3.lib)改名为zlib.lib, 否则CMake编译报错

从源码建立一个VS2019 X64的工程, 并指定ZLIB依赖路径


cmake .. -G "Visual Studio 16 2019" -A x64 -DZLIB_ROOT:STRING=../zlib
D:\3rd_prj\excel\libxlsxwriter\build>cmake .. -G "Visual Studio 16 2019" -A x64 -DZLIB_ROOT:STRING=../zlib
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- The C compiler identification is MSVC 19.29.30153.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- The CXX compiler identification is MSVC 19.29.30153.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found ZLIB: D:/3rd_prj/excel/libxlsxwriter/zlib/zlib.lib (found version "1.3.#define ZLIB_VERSION "1.3"")
zlib version:
-- Configuring done
-- Generating done
-- Build files have been written to: D:/3rd_prj/excel/libxlsxwriter/build

编译成功了.
打开VS2019工程
在这里插入图片描述
在这里插入图片描述
尝试编译工程, 有啥错误就补啥, 主要是zlib依赖相关.

在这里插入图片描述
将自己编译zlib时的目录拷贝过来, 去掉除了.h之外的文件(*.c, *.rc, *.def).
在这里插入图片描述

再尝试编译
在这里插入图片描述
编译成功了.

安装组件

先尝试全部编译解决方案, 通过.
再编译INSTALL工程
在这里插入图片描述
编译成功后, 就会将.lib, *.h 拷贝到 C:\Program Files\xlsxwriter
在这里插入图片描述
将C:\Program Files\xlsxwriter拷贝到自己的开发目录做存档, 给以后的工程用.

写个测试程序, 看看编译的组件是否好使

代码就用官方的例子.
新建一个VS2019工程, 编译选项为x64 debug, 包含进自己编译的libxlsxwriter和zlib的库, 头, 摆好dll

// testA.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <windows.h>
#include "xlsxwriter.h"
#pragma comment(lib, "xlsxwriter.lib")
#pragma comment(lib, "my_zlib_1d3.lib")

int main()
{
    int i_rc = 0;

    lxw_workbook* workbook = workbook_new("utf8.xlsx");
    lxw_worksheet* worksheet = workbook_add_worksheet(workbook, NULL);

    worksheet_write_string(worksheet, 2, 1, "Это фраза на русском!", NULL);

    i_rc = workbook_close(workbook);

    return S_OK;
}


在这里插入图片描述
在这里插入图片描述
将自己编译的zlib.dll放到exe同级目录, 运行编译出来的exe, 成功. 生成了.xlsx.
在这里插入图片描述
libxlsxwriter工程的编译, 测试 都成功了.

END

文章来源:https://blog.csdn.net/LostSpeed/article/details/135029233
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。