Clucene Windows上vs2022编译x64位教程
Clucene 编译网上教程不全,东拼西凑后成功编译。特此分享。
一 环境准备
1 本机环境:
Windows10
cmake 3.22.1
clucene 2.3.2
vs2022
2 Clucene源码下载
Clucene官网:https://clucene.sourceforge.net/download.shtml
使用git拉下最新代码:git clone git://clucene.git.sourceforge.net/gitroot/clucene/clucene
本机拉下代码为 D:\Clucene\clucene_2.3.2。
3 cmake 安装
自己参考一下网上教程,安装cmake。本机使用的是cmake3.22.1
二 cmake 生成clucene 工程
1 cmake选择源码目录和编译目录
如图我选择的是clucene_build 作为编译目录:
点击cmake 的configure。
2选择编译器
我选择的是vs2022 + x64 (编译32位选择win32)
然后点击finish,开始生成。
有些教程说缺少zlib 和 boost库,用此教程的源码仓库里面是包含这两个库的,无需额外配置
3 生成报错:printf could not be found处理
CMake Error at src/shared/cmake/MacroMustDefine.cmake:45 (MESSAGE):
printf could not be found
此错误需要在D:\Clucene\clucene_2.3.2/CMakeLists.txt 理解加入行:
SET(CMAKE_REQUIRED_LIBRARIES legacy_stdio_definitions.lib)
eg:
更改后点击delete cache,然后重新configure
4 生成成功
点击configure后,配置成功,再使用默认配置,点击Generate
Generate 有几个warning ,不管。点击Open Project,会自动用vs2022打开此工程
三 vs2022 编译clucene
1 vs 编译clucene
直接右键ALL_BUILD 工程,右键-》生成
2 编译报错snprintf
error C2084: 函数“int snprintf(char *const ,const size_t,const char *const ,…)”已有主体
解决方法:
打开D:\Clucene\clucene_build\src\shared\CLucene_clucene-config.h
注释掉71行 #define _snprintf snprintf
如图:
3 编译报错binary_function
error C2039: “binary_function”: 不是 “std” 的成员
error C2504: “binary_function”: 未定义基类
解决方法:
在D:\Clucene\clucene_2.3.2\src\core\CLucene\util\Equators.h 增加一行
然后ALL_BUILD就能编译通过了,输出dll:
D:\Clucene\clucene_build\bin\Debug\clucene-cored.dll
4 编译的时候报错找不到 unistd.h 文件
解决方法
创建unistd.h文件:
#ifndef _UNISTD_H
#define _UNISTD_H
#include <io.h>
#include <process.h>
#endif /* _UNISTD_H */
看cmake 生成的时候使用的是此处的vs:
所以将unistd.h文件,放在D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.40.33807\include目录即可
5 安装clucene
点击INSTALL工程,然后生成。报错:
error MSB3073: 命令“setlocal
使用管理员权限运行vs 重新生成INSTALL即可修复
最终输出目录: