Windows10+VS2015 64 + Slicer 4.9编译与自定义模块

编译环境

  • Windows 10 64位
  • VS2015 确保安装v140编译器和Win10 SDK
  • CMake 3.12.0
  • git,svn
  • Qt 5.10.1, 安装MSVC2015_64版本,安装目录D:\Qt\Qt5.10.1

编译目录

  • 根目录: D:\S
  • 源代码目录 D:\S\S
  • 编译debug目录 D:\S\BD
  • 编译release目录 D:\S\BR

Slicer编译步骤

  1. 源代码
    打开Git Bash工具,进入根目录D:\S,拉取源代码
    git clone https://git.coding.net/fitsir/Slicer.git S
    
  2. 修改代码
    目录D:\S\S\Base\QTApp\qSlicerApplicationHelper.cxx 在文件开一头增加头文件#include <windows.h>,不然总是报 SetProcessDPIAware 找不到标识符的错误。

  3. 运行CMake生成工程

    1. 打开cmake-gui工具
    2. Where is the souce code:处选择 D:\S\S
    3. Where to build the binaries:处选择 D:\S\BD,这里首先编译Debug版本
    4. 点击Configure,弹出的界面选择Visual Studio 14 2015 Win64,并在下面选项中填写host=x64。这是因为cmake默认host环境是32位,改后则默认host为64位。确定
    5. 确定qt版本, Slicer_REQUIRED_QT_VERSION改为5.10.1Qt5_DIR处选择D:/Qt/Qt5.10.1/5.10.1/msvc2015_64/lib/cmake/Qt5目录
    6. 取消BUILD_TESTING
    7. 修改Slicer_VTK_SMP_IMPLEMENTATION_TYPESequential
      9. 取消Slicer_USE_PYTHONQT_WITH_OPENSSL
    8. 多次点击Configure,消除红色
    9. 特别注意,不要使用系统自带的python或vtk,slicer工程会自动下载特定的版本,如果系统安装过python2,也需要把C:\Windows\python2.7.dll删除
    10. 点击Generate
    11. 点击Open Project,选择Debug
    12. 时间较长,特别是需要下载依赖的phthon, vtk等源码并编译
    13. 生成成功后,会在D:\S\BD\Slicer-build下生成Slicer.exe,双击即可运行。

Module编译步骤

Slicer的Module可以是界面左边的面板,这里以SlicerWelcom这个Module为模板,自己编译Slicer Module

  1. 源码目录 D:\S\Modules
  2. SlicerWelcom文件夹为D:\S\S\Modules\Loadable\SlicerWelcome,将其中所有文件复制至D:\S\Modules\SlicerTest,其中所有的Welcom改为Test, 所有WELCOM改为TEST
  3. 建立目录D:\S\Modules\SlicerTest\build,Git Bash中进入该目录
  4. 运行
    cmake -G "Visual Studio 14 2015 Win64"  \
     -Thost=x64  \
     -DSlicer_DIR:PATH=/d/S/B/Slicer-build  \
     -DCMAKE_INSTALL_PREFIX=D:/S/BD/Slicer-build  \
     ../
    
    会生成VS2015工程,在目录中双击Test.sln,打开工程,右键ALL_BUILD生成,很快编译成功。右键INSTALL生成。
  5. 运行Slicer.exe,在Moduels下拉菜单中就出现了Slicer Test模块,选择即可出现。
    slicer.png

  6. 增加Qt模块。因为模块中需要增加串口,需要Qt5::SerialPort模块,故修改ModuleCMakeLists.txt文件,增加

    set(Qt5_DIR "D:\\Qt\\Qt5.10.1\\5.10.1\\msvc2015_64\\lib\\cmake\\Qt5")
    find_package(Qt5 REQUIRED COMPONENTS SerialPort)
    set(MODULE_TARGET_LIBRARIES
     Qt5::SerialPort
    )
    

    在VS中重新生成即可