如何为包含CGAL和VTK库的项目创建CMakeLists.txt

3
我已经编写了一个小程序来评估科学数据(3D表面网格)。我使用vtk库提供的函数进行所有几何计算。然而,vtkBooleanOperationPolyDataFilter不太稳定,会随机崩溃。所以我决定使用cgal库的函数来执行布尔运算(通过一些样本数据测试后,没有稳定性问题)。
现在我想合并这两个项目。
vtk项目的CMakeLists.txt文件:
cmake_minimum_required(VERSION 2.8)
PROJECT(calcporosity)
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})

add_executable(calcporosity MACOSX_BUNDLE calcporosity)

if(VTK_LIBRARIES)
  target_link_libraries(calcporosity ${VTK_LIBRARIES})

else()
  target_link_libraries(calcporosity vtkHybrid vtkWidgets)
endif()

cgal项目的CMakeLists.txt:

project( cgal_test )

cmake_minimum_required(VERSION 2.6.2) if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" VERSION_GREATER 2.6) if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" VERSION_GREATER 2.8.3) cmake_policy(VERSION 2.8.4) else() cmake_policy(VERSION 2.6) endif() endif()

find_package(CGAL QUIET COMPONENTS Core )

if ( CGAL_FOUND )

include( ${CGAL_USE_FILE} )

include( CGAL_CreateSingleSourceCGALProgram )

include_directories (BEFORE "../../include")

include_directories (BEFORE "include")

create_single_source_cgal_program( "cgaltest.cpp" ) else()

message(STATUS "此程序需要CGAL库,将不会被编译。")
endif()

我尝试合并这两个文件但失败了。有人能给我一些提示如何为同时使用这两个库的项目创建适当的CMakeLists.txt吗?

提前感谢您的帮助和最好的问候!

P.s.: 我正在Windows平台上工作。

1个回答

4
基本上需要做的是,您需要为您的可执行文件提供来自两个依赖项的包含目录和链接库。
cmake_minimum_required(VERSION 2.8.4)

project( cgal_vtk_test )

# Find CGAL
find_package(CGAL REQUIRED COMPONENTS Core) # If the dependency is required, use REQUIRED option - if it's not found CMake will issue an error
include( ${CGAL_USE_FILE} )

# Find VTK
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})


# Setup your executable
include_directories (BEFORE "../../include")
include_directories (BEFORE "include")

include( CGAL_CreateSingleSourceCGALProgram )
create_single_source_cgal_program( "cgal_vtk_test.cpp" ) # This will create an executable target with name 'cgal_vtk_test'

# Add VTK link libraries to your executable target
target_link_libraries(cgal_vtk_test ${VTK_LIBRARIES})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接