我是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)
来引发错误(如果找不到)。似乎找到了软件包 。
这里可能出什么问题了?
答案 0 :(得分:0)
根据我在CGAL方面的经验,您需要包括使用文件:include(${CGAL_USE_FILE})
,然后可以根据需要使用目标。根据输出消息,由于目标CGAL::CGAL
不存在,因此似乎未找到CGAL。
所以基本上您需要:
find_package(CGAL)
# .. other code
include(${CGAL_USE_FILE})
add_executable(myexe ...)
target_link_libraries(myexe
PUBLIC
CGAL::CGAL
CGAL::CGAL_Core # and so on...
)