【发布时间】:2023-03-10 18:54:01
【问题描述】:
我是 CentOS 6 服务器的用户,管理员很友好地安装了
CGAL 就可以了。首先,我将描述本地机器上的 CMakeLists.txt,
一切正常,然后我的问题是为什么在服务器上同样不起作用。
在我的笔记本电脑上,我有一个使用 EMST 示例 https://doc.cgal.org/latest/BGL/BGL_triangulation_2_2emst_8cpp-example.html 的项目。
“最外层”的 CMakeLists.txt 有 find_package(CGAL)
而具体的 CMakeLists.txt 有这个:
add_executable(emst emst.cpp)
target_compile_options(emst BEFORE PUBLIC -mcmodel=large PRIVATE -pg -g -O2)
target_link_libraries(emst CGAL::CGAL)
整个事情“在我的机器上工作”(c)。通常,在项目的构建目录中,我会发出cmake ../,然后在特定于emst 的子目录make emst 中发出(当然,这一切都是通过在CLion 中适当单击来完成的)。
现在,这个设置在服务器上不起作用。
我收到如下错误:
/emst.cpp:99:44: error: no matching function for call to ‘source(edge_descriptor&, Triangulation&)’
vertex_descriptor svd = source(ed,t);
^
In file included from /usr/include/CGAL/boost/graph/graph_traits_Delaunay_triangulation_2.h:25:0,
管理员告诉我:
库可以在 /usr/lib64 中找到,头文件在 /usr/include/CGAL.
在服务器上的cmake ../-阶段的某个时刻,我收到如下消息:
utils/CMakeLists.txt:31 (add_executable) 处的 CMake 警告 (dev):
未设置策略 CMP0028:目标名称中的双冒号表示 ALIAS 或 导入的目标。为策略运行“cmake --help-policy CMP0028” 细节。使用 cmake_policy 命令设置策略并抑制 这个警告。目标“emst”链接到目标“CGAL::CGAL”,但目标不是 成立。 IMPORTED 可能缺少 find_package() 调用 目标,还是缺少 ALIAS 目标?此警告适用于项目 开发商。使用 -Wno-dev 来抑制它。
我尝试了find_package(CGAL REQUIRED),以便它在未找到时抛出错误。似乎找到了包。
这里可能出了什么问题?
【问题讨论】:
-
服务器上的CGAL版本是多少?在 4.12 之前,您需要使用开发人员 Paul 描述的 use_file。