CMakiLists.txt

时间:2019-04-06 22:39:18

标签: c++ cmake cgal

我是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)来引发错误(如果找不到)。似乎找到了软件包 。 这里可能出什么问题了?

1 个答案:

答案 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...
)