Conan之于C++的关系,相当于pip之于Python、npm之于NodeJS、NuGet之于C#。
Conan服务器上有很多预编译好的库,包括CGAL。在使用Conan下载CGAL时,它还会帮我们把CGAL相关的依赖库加进来。因此我们使用Conan可以很方便的开发CGAL。

本文示例代码:https://github.com/geodoer/cpp3d-codes/tree/main/cgal-samples/simple

本示例中使用的是CMake来构建工程,CMake不会很难,也只是一个工具而已。简单使用的话,了解几个命令即可。

安装Conan

一、安装Python3
Conan基于Python编写,所以需要安装Python。Python的安装很简单,下载一个安装器,一路Next即可。
下载地址:https://www.python.org/downloads/

二、安装Conan
使用Python的包管理工具pip安装Conan

  1. # Windows
  2. pip install conan
  3. # Linux需要使用sudo安装全局的Python包
  4. sudo pip install conan

编写CGAL代码

#include <iostream>
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel; //精确谓词、精确构造的内核
typedef Kernel::Point_3 CGPoint3;

using namespace std;

int main()
{
    double x = 2.21231224, y = 3.321443645, z = 4.12335465;
    CGPoint3 pnt(x, y, z);
    cout << pnt << endl;

    //double x1 = pnt.x();
    double x1 = CGAL::to_double(pnt.x());
    cout << x1 << endl;

    //to_interval

    return 0;
}

在项目根目录上编写conanfile.txt

conanfile.txt即是conan管理包的说明文件。

[requires]
cgal/5.3

[generators]
cmake

使用Conan下载CGAL

# 在项目根目录下创建build目录
mkdir build

# 进入build目录
cd build

# 根据conanfile.txt下载CGAL
conan install ..
  # ..代表上一级目录,代表conanfile.txt所在位置

运行之后,conan就会将CGAL下载到本地。然后在build目录下生成了一些信息

  • conanbuildinfo.cmake这个是帮助cmake来找到conan所安装的包的(在这里就是CGAL与它的依赖包)

image.png

使用cmake来构建工程

一、在工程目录下创建一个CMakeLists.txt

# 工程名
project(cgalsamples-simple)
set(TARGET_NAME cgalsamples-simple)

# 把conan引入进来
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()

# 将此目录下的所有cpp、h、hpp文件列出来
file(GLOB_RECURSE SRC_FILES "src/*.cpp")
file(GLOB_RECURSE Headers_FILES "src/*.h" "src/*.hpp")
set(all_files ${SRC_FILES} ${Headers_FILES})

# 创建一个名为${TARGET_NAME}的可执行文件,代码有${all_files}
add_executable(${TARGET_NAME} ${all_files})
# 将conan中的包链接到可执行程序中
target_link_libraries(${TARGET_NAME} ${CONAN_LIBS})

二、使用CMake-GUI创建VS工程

  1. Where is the source code:选择CMakeLists.txt所在目录
  2. Where to build the binaries:选择build目录
  3. 点击Configure配置信息
    1. 选择生成器,即Visual Studio 15 2017
    2. 选择平台,x64

image.png

  1. 点击Finish

image.png

  1. 在点击一次Configure

image.png

  1. 点击Generate,开始生成工程

image.png

  1. 点击Open Project即可

三、编译

  1. 换成RelWithDebinfo

image.png

  1. 右键cgalsamples-simple设置为启动项

image.png

  1. 点击运行即可

image.png

附:conan下载的CGAL是什么编译器的?(遇到问题看这里)

看到这里,你有疑问,Conan怎么知道我们是要下载Visual Studio 15 2017、x64、RelWithDebInfo的编译版本。

你在使用conan安装CGAL的时候,执行了conan install ..命令,并没有跟具体的配置参数。
所以conan下载时,参考的是这个文件中的内容:C:\Users\2107\.conan\profiles\default
image.png
所以如果这个文件的配置参数与你的开发环境不同的话,那么你就会出各种错误。
没关系,你修改这个文件保存即可。

后语

Conan是挺不错的一个工具,希望它能稳定发展,降低C++的开发门槛。
Conan、CMake其实都是很简单的工具,不要畏惧。如果遇到问题,欢迎留言。
后续有时间会出CGAL+QT的例子。

笔者会在上面Github仓库上,慢慢更新关于Cpp几何相关的Demo,包括vcglib、CGAL、OCCT等等。有兴趣的,可以订阅一下。谢谢大家的支持,有问题也希望大家能够不吝赐教。