1 qhull
1.1 简要介绍
qhull
是一个强大的计算几何库,可以用于计算高维的convex hull, Delaunay triangulation, Voronoi diagram
等。
1.2 依赖库
qhull
不需要再配置其他库。
1.3 源码包下载
qhull
源码地址:github
:https://github.com/qhull/qhull.git
2 Cmake构建项目
2.1 路径
源代码路径:D:/ThirdParty/qhull/qhull_8.0.0
构建项目路径:D:/ThirdParty/qhull/qhull_8.0.0_build
2.2 构建选项
名称 | 值 | 备注 |
---|---|---|
CMAKE_INSTALL_PREFIX | path | 编译时生成的安装文件路径 |
手动Add Entry
如下:
Name | Type | Value |
---|---|---|
CMAKE_DEBUG_POSTFIX | STRING | -d ,debug 版本库名称后缀 |
注:
qhull
默认情况下会动态库和静态库都会生成。
库名称中,qhullcpp.lib
和含有static
的是静态库,含有-d
的是debug
版本库。
2.3 构建项目
步骤如下:
- 指定源码路径;
- 指定构建项目路径;
- 点击
Configure
; - 按照2.2节表中的值进行设置;
- 再次点击
Configure
; - 点击
Generate
,构建项目路径中将生成解决方案文件qhull.sln
。
点击
Configure
或Generate
后,如果顺利,会出现Configuring done
或Generating done
。
3 打开解决方案并编译
3.1 编译解决方案
点击Open Project
(或者在2.3节步骤2中指定的构建项目路径中,找到生成的解决方案文件qhull.sln
,通过Visual Studio
打开),打开通过Cmake
构建的项目;
选中ALL_BUILD
项目,分别在Debug
和Release
模式下,重新生成解决方案。
3.2 安装qhull
选中INSTALL
项目,右击,重新生成,此时,将会在指定路径下(2.2节表中CMAKE_INSTALL_PREFIX
选项的值)主要生成3个文件夹include
和lib
和bin
。
4 实际项目环境配置
注:以下通过属性表的方式进行环境配置。
4.1 附加包含目录
$(qhull)\include
$(qhull)
(在系统环境变量中添加并设置)就是2.2节表中CMAKE_INSTALL_PREFIX
选项的值。
4.2 附加库目录
$(qhull)\lib
4.3 附加依赖项
qhull_p-d.lib + q hull_r-d.lib + qhull-d.lib
或qhull_p.lib + q hull_r.lib + qhull.lib
依次配置debug版本(文件名中有-d
)和release版本。
注意,添加附加依赖项时,不要漏掉文件后缀名
.lib
!
静态库名称不需要添加。
4.4 动态库
将动态库目录添加至系统环境变量Path
,步骤如下:
- 计算机右击,点击“属性”;
- 点击“高级系统设置”;
- 点击“环境变量”;
- 双击
Path
; - 添加
%qhull%\bin
,该目录下是包含了动态库文件。
本文使用的都是相对路径,因此需事先设置好环境变量
qhull
,值为CMAKE_INSTALL_PREFIX
对应的目录,也可以使用绝对路径。
注:上述步骤是按照加载
qhull
动态库的方式进行配置的;
当然也可以按照静态库的方式配置,可省略步骤4.4
。
4.5 测试代码
#include "libqhull/random.h"
#include <stdio.h>
int main()
{
int i_num = qh_rand();
printf("%d\n", i_num);
return 0;
}
#include "libqhullcpp/Qhull.h"
#include <iostream>
int main()
{
qhT* a = new qhT;
int i_num = qh_rand(a);
std::cout << i_num << std::endl;
std::system("pause");
return 0;
}
注意!!!对于
.c
程序,需要使用libqhull
文件夹下的头文件,而对于.cpp
程序,需要使用libqhullcpp
文件夹下的头文件,两者只能二选一,这个问题查了一下午,心酸。