在 XCode 7.0.1 中设置 VTK 6.1

Setting up VTK 6.1 in XCode 7.0.1

所以,我 运行 陷入了获取 VTK (Visualization ToolKit) to work on Mac OSX, especially getting it to work in XCode 的问题。

(我让它工作了,post 将在下面回答这个问题)

截至 2015 年 10 月的当前设置:

我希望这能帮助每个在 OSX 上配置和构建 VTK 并正确设置 XCode 以成功构建 VTK 项目的整个过程中遇到类似问题的人。我也希望我不会忘记任何相关的事情。如果您有任何疑问或看到我犯的一些错误,请 comment/answer。

我会一步步经历从构建VTK到设置XCode的整个过程。我做了很多谷歌搜索并尝试了不同的东西。此外,我将尝试提供一些屏幕截图以帮助澄清问题,尤其是对于 XCode 的新手,例如我。据我所记得并将它们加入书签,我也会提供帮助我进行设置的资源。

下载、构建并安装

这主要包括来自这个 Whosebug 线程的步骤:Installing VTK 6.1 for OSX 10.8 with Cocoa support

  1. 将 VTK 源代码从 Github 克隆到您选择的目录

    cd /Users/you/

    git clone https://github.com/Kitware/VTK.git

    cd VTK

    git checkout tags/v6.1.0

  2. 创建构建目录

    mkdir VTKBuild

    cd VTKBuild

    如果您不知道 "building" 在 C/C++ 的上下文中意味着什么,我建议您进一步阅读:Building C/C++: what really happens and why does it take so long

  3. 正在编辑 CMakeLists.txt

    在您下载的源目录(不是/VTKBuild 目录)中,应该有一个文件"CMakeLists.txt"。在文本编辑器中打开它并搜索以下行:

    IF(APPLE)
     SET(VTK_OBJCXX_FLAGS_DEFAULT "-fobjc-gc")
     SET(VTK_REQUIRED_OBJCXX_FLAGS ${VTK_OBJCXX_FLAGS_DEFAULT} CACHE STRING "Extra flags for Objective-C++ compilation")
     MARK_AS_ADVANCED(VTK_REQUIRED_OBJCXX_FLAGS)
    ENDIF()
    

    删除或评论这些行。如果您一开始没有找到它们,我想您应该可以开始了,因为这可能会在较新的版本中得到修复。

    来源:[Solved] Build Qt 5.2.1 + VTK 6.1.0 + CMake 2.8.12.2

  4. 运行 cmake 脚本

    更改您的 /VTKBuild 目录。你现在在 /Users/you/VTK/VTKBuild

    cmake ..

  5. 编辑CMakeCache.txt

    现在我们需要在生成的 CMakeCache.txt 中编辑几行(在您的 /VTKBuild 目录中)。

    CMAKE_INSTALL_PREFIX. So make sure to use "/Users/you/" instead of "~":
    
    CMAKE_INSTALL_PREFIX:PATH=/Users/you/VTK/VTKBuild
    
    BUILD_SHARED_LIBS:BOOL=OFF
    
    CMAKE_BUILD_TYPE:STRING=Debug
    
    VTK_USE_SYSTEM_ZLIB:BOOL=ON
    
    CMAKE_OSX_ARCHITECTURES:STRING=i386;x86_64
    
    VTK_USE_COCOA:BOOL=ON
    
    VTK_USE_CARBON:BOOL=OFF
    
    CMAKE_OSX_SYSROOT:STRING=/Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
    

    如果您使用与我不同的 OS X 版本来学习本教程,最后配置行的值可能会有所不同。在我的 CMakeCache.txt 中,它已经配置为正确的值。

    其他来源:Part One: Build VTK libraries on Mac

  6. 编译VTK工程

    这可能需要很长时间,您可以通过添加 -j ( +核心数)参数。这告诉您的编译器使用多个核心来编译文件并且应该加快速度。 (您仍在 VTKBuild/ 目录中)。

    make

  7. 现在将头文件和库复制到包含目录

    make install

    这应该在您的 /VTKBuild 目录中创建一个 /lib 和一个 /include 目录。我们稍后会提到它们。

    建筑部分应该这样做。 VTK 现在已正确安装在您的系统上。

设置 XCode 项目

来源:Part Three: Create Xcode by hand

作为一般建议。如果配置一些路径,尽量使用绝对路径。特别是当我写类似“.../VTKBuild”的东西时,将“...”替换为路径的正确部分。

  1. 新建项目

    启动 XCode 并创建一个新项目(文件 -> 新项目)。选择 OS X -> 应用程序 -> 命令行工具。单击 'Next',为其命名,并将 select C++ 作为您的 'Language'。选择您想要的位置并以 'Create'.

  2. 结束
  3. 添加了必要的框架

    Select 您的项目在左侧栏中,然后在中间导航至 'Build Phases'。这应该给你这个视图:

    现在展开 'Link Binary with Libraries' 行。在一个新项目中,这应该包含任何内容。我们现在需要 link OpenGL,Cocoa 和 IOKit 框架。您可以通过点击底部的 + 按钮来完成此操作。这将打开与某些框架的对话。只需搜索上述框架并点击 'Add'。

    我们还需要添加 zlib 库。再次点击 + 按钮,搜索 'libz'。然后添加 'lib.tbd' 库。有多个版本可用,我只是添加了一个没有版本号的版本。其他人也可以工作。现在它应该是这样的:

    现在我们需要添加 VTK 库文件。它们位于您的 /VTKBuild/lib 目录中。它们应该被命名为 'libvtkXXX.a'。您可以通过文件对话框将它们拖放到 window 或 select 中,就像上述步骤中的框架一样:+ 按钮 -> 'Add Other..' -> 导航到 /VTKBuild/lib -> select 所有 *.a 文件用 Shift+Click/Cmd+点击 -> 'Open'。它们可能需要一段时间才能出现在界面上。

  4. 配置源树

    打开 XCode 首选项 (CMD+,)。在顶部栏中导航至 'Locations' 和 select 'Source Trees'。添加两行:

    "Name" - "Display-Name" - "Path"

    vtk-debug-include vtk-debug-include ...VTKBuild/include/vtk-6.1

    vtk-debug-lib vtk-debug-lib ...VTKBuild/lib

  5. 添加搜索路径

    我们现在需要告诉 XCode 在哪里寻找额外的头文件 (*.h),以便您能够在您的代码中“#include <...>”它们。

    为此,再次 select 您在左侧栏中的项目。导航至 'Build Setting' 并输入过滤器 'search'。应该有一个名为 'Search Paths' 的行,其中包含子行 'Header Search Paths' 和 'Library Search Paths'。第一个需要设置为'...VTKBuild/include/vtk-6.1',后一个设置为'...VTKBuild/lib' .

  6. 定义宏

    如果以上都做到了。一个包含 VTK 头文件的项目应该构建并且 运行。但是为了 运行 正确,您可能需要在 *.cpp 文件之上定义两个宏,在任何 #include 语句之前:

    #define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)
    #define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)
    

    没有这些我例如vtkWindowInteractor 无法正常工作时出现问题。

就是这样!享受视觉化的乐趣。