使用 VS2015 构建 CGAL 的过程
Build process for CGAL with VS2015
在 visual studio 2015 年使用 CMAKE 构建后,我发现存在一些构建错误,需要我编辑代码。我觉得这不是必需的,并且想知道我是否在构建过程中做错了什么使这些错误浮出水面
首先,我必须在文件 include/CGAL/auto-link/auto-link.h 和 cmake/module/CGAL_GeneratorSpecificSettings.cmake 中将编译器名称从 vc130 更正为 vc140。我假设这只是因为它没有经过 VS2015 测试,有人只是假设 vc130 会跟随 vc120。
我 运行 遇到的另一个问题是八个函数没有编译。这些是函数
Segment_2<R_>::min
Segment_2<R_>::max
Segment_2<R_>::vertex
Segment_2<R_>::point
Segment_2<R_>::operator[]
Segment_3<R_>::min
Segment_3<R_>::max
问题似乎是实现的类型签名与声明的类型签名不匹配。我尝试修复类型签名,但无法使其完全匹配。为了解决这个问题,我最终将这些函数的实现移到了声明中。我想知道为什么这显然是必要的,因为它可能是为其他人编译的。 Sloriot 评论说,这是因为 VS2015 编译器比用于测试的 CGAL 编译器更新。然而,我的理解是 visual studio 编译器是向后兼容的,因此它不应该破坏代码来更新编译器。
第一个正式兼容VS2015的CGAL版本将是CGAL 4.7。
似乎新版本的 Microsoft 在编译它之前接受的有效 C++ 代码时存在一些问题。这解释了为什么 CGAL 4.6 版(或之前的版本)在使用新编译器时存在一些编译问题。
在 visual studio 2015 年使用 CMAKE 构建后,我发现存在一些构建错误,需要我编辑代码。我觉得这不是必需的,并且想知道我是否在构建过程中做错了什么使这些错误浮出水面
首先,我必须在文件 include/CGAL/auto-link/auto-link.h 和 cmake/module/CGAL_GeneratorSpecificSettings.cmake 中将编译器名称从 vc130 更正为 vc140。我假设这只是因为它没有经过 VS2015 测试,有人只是假设 vc130 会跟随 vc120。
我 运行 遇到的另一个问题是八个函数没有编译。这些是函数
Segment_2<R_>::min
Segment_2<R_>::max
Segment_2<R_>::vertex
Segment_2<R_>::point
Segment_2<R_>::operator[]
Segment_3<R_>::min
Segment_3<R_>::max
问题似乎是实现的类型签名与声明的类型签名不匹配。我尝试修复类型签名,但无法使其完全匹配。为了解决这个问题,我最终将这些函数的实现移到了声明中。我想知道为什么这显然是必要的,因为它可能是为其他人编译的。 Sloriot 评论说,这是因为 VS2015 编译器比用于测试的 CGAL 编译器更新。然而,我的理解是 visual studio 编译器是向后兼容的,因此它不应该破坏代码来更新编译器。
第一个正式兼容VS2015的CGAL版本将是CGAL 4.7。 似乎新版本的 Microsoft 在编译它之前接受的有效 C++ 代码时存在一些问题。这解释了为什么 CGAL 4.6 版(或之前的版本)在使用新编译器时存在一些编译问题。