geometry - Ubuntu 18.04 上的 CGAL 示例
问题描述
我在 ubuntu 18.04 LTS 上通过包管理器安装了 CGAL。然后如https://doc.cgal.org/latest/Manual/usage.html中所述,以编译示例程序。当我发布时:
cmake -DCMAKE_BUILD_TYPE=Release .
要配置示例,我收到以下错误:
CMake Error at CMakeLists.txt:29 (create_single_source_cgal_program):
Unknown CMake command "create_single_source_cgal_program".
-- Configuring incomplete, errors occurred!
请帮助;我应该怎么办?
CmakeLists.txt
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
cmake_minimum_required(VERSION 3.1...3.15)
project( Triangulation_2_Examples )
if(NOT POLICY CMP0070 AND POLICY CMP0053)
# Only set CMP0053 to OLD with CMake<3.10, otherwise there is a warning.
cmake_policy(SET CMP0053 OLD)
endif()
if(POLICY CMP0071)
cmake_policy(SET CMP0071 NEW)
endif()
find_package(CGAL COMPONENTS Qt5)
if(CGAL_Qt5_FOUND)
add_definitions(-DCGAL_USE_BASIC_VIEWER -DQT_NO_KEYWORDS)
endif()
if ( CGAL_FOUND )
# create a target per cppfile
file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
foreach(cppfile ${cppfiles})
create_single_source_cgal_program( "${cppfile}" )
endforeach()
if(CGAL_Qt5_FOUND)
target_link_libraries(draw_triangulation_2 PUBLIC CGAL::CGAL_Qt5)
else()
message(STATUS "NOTICE: The example draw_triangulation_2 requires Qt and will not be compiled.")
endif()
else()
message(STATUS "This program requires the CGAL library, and will not be compiled.")
endif()
解决方案
看起来我们应该在 CGAL 安装期间立即构建所有CGAL 示例(使用cmake
选项-DWITH_examples=ON
)。示例和子示例很多,因此构建所有示例和子示例需要很长时间。
但是,我能够一个一个有选择地构建这些示例(见下文)。我不是 CGAL 开发人员,所以我的方法可能不是他们想要的 - 但无论如何我希望它对 CGAL 社区有用。我假设已经安装了 CGAL,但没有示例。
步骤 1。使用您想要的任何名称为 CGAL 示例创建一个目录,然后输入此目录:
mkdir CGAL
cd GGAL
步骤 2。将 CGAL 发行版中的目录复制examples
到此目录中,并确保它是可写的:
cp -r <CGAL distribution>/examples .
chmod -R u+w examples
步骤 3。运行cmake
生成一个Makefile
. 如果您将 CGAL 安装到某个不寻常的位置,您将需要CMAKE_INSTALL_PREFIX
选项来告知cmake
该位置:
cmake -DCMAKE_INSTALL_PREFIX=<CGAL location> examples
第 4 步。运行make help
以查看您可以制作的所有可能示例。您可以选择所有示例,这些示例可以可视化一些内容:
make help | grep draw
步骤 5。构建Triangulation_2
示例之一:
make draw_triangulation_2
步骤 6。进入示例目录并运行示例:
cd examples/Triangulation_2
./draw_triangulation_2&
顺便说一句,由于某种原因,第一次draw_triangulation_2
运行在我的盒子上显示了一个空窗口,但第二次运行显示了正确的图片。
推荐阅读
- angular - 使用 angularfire2 将文档复制到另一个集合
- c# - 无法使用 Response.Redirect 重定向到页面
- javascript - 错误未捕获 SyntaxError:无效的正则表达式:/(/:未终止的组
- python - 如何使用 aiohttp 模拟外部请求?
- python - Elasticsearch:仅匹配无日期字段
- javascript - 如何使用替代变量编写此 for 循环?
- php - Mysql Select查询从三个表中获取数据
- elasticsearch - 如何使字段可搜索?
- r - 如何按顺序运行多个 rscript?
- eclipse - Xtext DSL 查询语言的路线图