文章目录
- libxlsxwriter - 编译
- 概述
- 笔记
- 编译环境
- 编译思路
- 编译
- 安装组件
- 写个测试程序, 看看编译的组件是否好使
- END
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工程的编译, 测试 都成功了.