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
# Windows
pip install conan
# Linux需要使用sudo安装全局的Python包
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与它的依赖包)
使用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工程
- Where is the source code:选择CMakeLists.txt所在目录
- Where to build the binaries:选择build目录
- 点击Configure配置信息
- 选择生成器,即Visual Studio 15 2017
- 选择平台,x64
- 点击Finish
- 在点击一次Configure
- 点击Generate,开始生成工程
- 点击Open Project即可
三、编译
- 换成RelWithDebinfo
- 右键
cgalsamples-simple
设置为启动项
- 点击运行即可
附:conan下载的CGAL是什么编译器的?(遇到问题看这里)
看到这里,你有疑问,Conan怎么知道我们是要下载Visual Studio 15 2017、x64、RelWithDebInfo的编译版本。
你在使用conan安装CGAL的时候,执行了conan install ..
命令,并没有跟具体的配置参数。
所以conan下载时,参考的是这个文件中的内容:C:\Users\2107\.conan\profiles\default
所以如果这个文件的配置参数与你的开发环境不同的话,那么你就会出各种错误。
没关系,你修改这个文件保存即可。
后语
Conan是挺不错的一个工具,希望它能稳定发展,降低C++的开发门槛。
Conan、CMake其实都是很简单的工具,不要畏惧。如果遇到问题,欢迎留言。
后续有时间会出CGAL+QT的例子。
笔者会在上面Github仓库上,慢慢更新关于Cpp几何相关的Demo,包括vcglib、CGAL、OCCT等等。有兴趣的,可以订阅一下。谢谢大家的支持,有问题也希望大家能够不吝赐教。