Slicer可以通过cmake的superbuild编译,前提是能上github,如果网络环境不行,编译速度很慢。
所以决定构建一个不需要外网的内网环境的编译环境
不依赖于外网的环境有两种模式,
第一种是不使用Superbuild,直接下载编译依赖库,这种模式适合个人开发,但后期如果需要修改Slicer源码,不好维护,如果不需要修改Slicer的源码,这种模式很好,编译速度也快。
第二种在内网构建一个GitLab的Superbuild的环境,将从github的的链接全部修改指向内网的Gitlab服务器。这样既可以不依赖外网,还可以维护自己的Slicer版本,也可以跟着Slicer大版本同步升级版本。
这篇博客主要就是讲第二种放案
第一步: 找一台能上外网的机器,通过superbuild编译一个slicer,可以编译全部的功能
第二步:建立内网的gitlab工程,将代码上传到内网的gitlab上
举bzip2为例子,在内网的gitlab上创建bzip2的空白工程; https://192.168.3.22/slicer/bzip2.git
进入slicer的编译目录,找到下载的对应的源码目录,
cd existing_repo git remote rename origin old-origin git remote add origin https://192.168.3.22/slicer/bzip2.git git push --set-upstream origin --all git push --set-upstream origin --tags
第三步,修改slicer源码目录下的SuperBuild目录下External_bzip2.cmake文件的git路径
? ExternalProject_SetIfNotDefined(
? ? Slicer_${proj}_GIT_REPOSITORY
? ? "${EP_GIT_PROTOCOL}://github.com/commontk/bzip2.git"
? ? QUIET
? ? )
修改为
? ExternalProject_SetIfNotDefined(
? ? Slicer_${proj}_GIT_REPOSITORY
? ? "${EP_GIT_PROTOCOL}://192.168.3.22/slicer/bzip2.git"
? ? QUIET
? ? )
第三步确认你内网的的commit的hash存在这个,如果不存在,修改为你内网的git commit的hash就可以