libxlsxwriter - 编译

文章目录

    • libxlsxwriter - 编译
    • 概述
    • 笔记
    • 编译环境
    • 编译思路
    • 编译
    • 安装组件
    • 写个测试程序, 看看编译的组件是否好使
    • END

libxlsxwriter - 编译

概述

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

笔记

libxlsxwriter的库地址 : https://github.com/jmcnamara/libxlsxwriter.git
迁出到本地
切换到最新的发布版本.
libxlsxwriter - 编译_第1张图片
libxlsxwriter - 编译_第2张图片

编译环境

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)
libxlsxwriter - 编译_第3张图片
在官方资料中搜索之前, 指定和自己用的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工程后, 缺啥补啥, 可以自己改配置.
libxlsxwriter - 编译_第4张图片
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工程
libxlsxwriter - 编译_第5张图片
libxlsxwriter - 编译_第6张图片
尝试编译工程, 有啥错误就补啥, 主要是zlib依赖相关.

libxlsxwriter - 编译_第7张图片
将自己编译zlib时的目录拷贝过来, 去掉除了.h之外的文件(*.c, *.rc, *.def).
libxlsxwriter - 编译_第8张图片

再尝试编译
libxlsxwriter - 编译_第9张图片
编译成功了.

安装组件

先尝试全部编译解决方案, 通过.
再编译INSTALL工程
libxlsxwriter - 编译_第10张图片
编译成功后, 就会将.lib, *.h 拷贝到 C:\Program Files\xlsxwriter
libxlsxwriter - 编译_第11张图片
将C:\Program Files\xlsxwriter拷贝到自己的开发目录做存档, 给以后的工程用.

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

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

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

#include 
#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;
}


libxlsxwriter - 编译_第12张图片
libxlsxwriter - 编译_第13张图片
将自己编译的zlib.dll放到exe同级目录, 运行编译出来的exe, 成功. 生成了.xlsx.
libxlsxwriter - 编译_第14张图片
libxlsxwriter工程的编译, 测试 都成功了.

END

你可能感兴趣的:(libxlsxwriter,libxlsxwriter)