Windows操作系统中离线编译CTK的详细步骤(修正)

一、准备编译环境

64位Windows操作系统:Windows 7旗舰版或者Win10专业版。

 

1. 安装Visual Studio 2017 Enterprise企业版

或者Visual Studio 2017 Enterprise精简版:

百度网盘链接:https://pan.baidu.com/s/16eZDoj2qTuc8j6PAJiBt8Q

提取码:gznv

安装D:\Green\VS2017目录

 

2. msys2:

http://repo.msys2.org/distrib/i686/msys2-i686-20190524.exe

安装到D:\Green\msys目录

 

3. mingw64:

http://sourceforge.mirrorservice.org/m/mi/mingw-w64/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z

解压覆盖D:\Green\msys\mingw64目录中的内容

mklink D:\Green\msys\mingw64\bin\make.exe D:\Green\msys\mingw64\bin\mingw32-make.exe

或者

copy D:\Green\msys\mingw64\bin\mingw32-make.exe D:\Green\msys\mingw64\bin\make.exe

 

4. nasm:

https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/win64/nasm-2.14.02-win64.zip

解压并更名为D:\Green\nasm

 

5. Git:

https://github.com/git-for-windows/git/releases/download/v2.25.0.windows.1/PortableGit-2.25.0-64-bit.7z.exe

解压并更名为D:\Green\Git

ren D:\Green\Git\usr\bin\perl.exe D:\Green\Git\usr\bin\perl-.exe

 

6. jom:

http://download.qt.io/official_releases/jom/jom_1_1_3.zip

解压并更名为D:\Green\jom

 

7. pexports:

https://sourceforge.net/projects/mingw/files/MinGW/Extension/pexports/pexports-0.47/pexports-0.47-mingw32-bin.tar.xz/download

解压到D:\Green\msys\usr,即将压缩包bin目录下面的pexports.exe放到D:\Green\msys\usr\bin目录。

 

8. zip3.0

http://downloads.sourceforge.net/gnuwin32/zip-3.0-bin.zip

http://downloads.sourceforge.net/gnuwin32/zip-3.0-dep.zip

解压到某文件夹,将bin目录中的内容复制到D:\Green\msys\usr\bin目录。

 

9. 以上2至8步的整合压缩包:

百度网盘链接:https://pan.baidu.com/s/1UarAp-a2mWV3H9uGu1dGAg

提取码:vnck

忘记更改D:\Green\Git\usr\bin\perl.exe的文件名称了,好像也没有太大问题,如果执行perl时出现问题记得更改文件名称。

 

10. ActivePerl-5.26.3.2603-MSWin32-x64-a95bce075

https://platform.activestate.com/ActiveState/ActivePerl-5.26/auto-fork?utm_campaign=fork-perl&utm_medium=website&utm_source=activestate.com&utm_term=perl5.26&utm_content=fork-activeperl5.26

需要创建ActiveState账号,下面是登陆之后的链接,不知道是否有效。

https://camel-builds.s3.amazonaws.com/ActivePerl/MSWin32-x64/20200110T012910Z/ActivePerl-5.26.3.0000-MSWin32-x64-f7fd6fde.exe?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJAFTYUXEZJ3HWLEQ%2F20200218%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200218T103123Z&X-Amz-Expires=21600&X-Amz-SignedHeaders=host&X-Amz-Signature=02896a59a96665177ac339c4d882d0de6cc12889367d4726813acb087d00043e

或者百度网盘:https://pan.baidu.com/s/1iVGuPBXWN3YXXBtNJOw-tg

提取码:i0dc

 

11. ActiveTcl-8.6.9.8609.2-MSWin32-x64-5ccbd9ac8

https://platform.activestate.com/ActiveState/ActiveTcl-8.6/auto-fork?utm_campaign=download-tcl&utm_medium=website&utm_source=activestate.com&utm_term=tcl_8.6&utm_content=activetcl-download-8.6

需要创建ActiveState账号,下面是登陆之后的链接,不知道是否有效。

https://pre-platform-installers.s3.amazonaws.com/ActiveTcl-8.6.9.8609.2-MSWin32-x64-5ccbd9ac8.exe?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJAFTYUXEZJ3HWLEQ%2F20200218%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200218T090539Z&X-Amz-Expires=21600&X-Amz-SignedHeaders=host&X-Amz-Signature=2f97cbada9ac09712a776ceb1ee6163280c3f624b0f8659584412c725da83247

或者百度网盘:https://pan.baidu.com/s/1P8qsEC6LUJqwHWrz_6kG_A

提取码:evro

 

12. python-3.7.6-amd64

https://www.python.org/ftp/python/3.7.6/python-3.7.6-amd64.exe

安装到C:\Python37目录,选择Install for all users

 

13. cmake-3.16.2-win64-x64

https://github.com/Kitware/CMake/releases/download/v3.16.2/cmake-3.16.2-win64-x64.msi

Add CMake to the system PATH for all users

 

14. MsMPI

https://www.microsoft.com/en-us/download/details.aspx?id=57467

msmpisetup.exe

msmpisdk.msi

默认安装即可

 

15. .NET Framework 4.6.2 Runtime

https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net462-offline-installer

Win10 专业版可能已经包含,Win7旗舰版一般没有该组件,如果安装vs2017精简版的话,可能需要单独安装该组件

 

16. 安装Visual Studio 2015 Enterprise企业版

或者Visual Studio 2015 Enterprise精简版:

百度网盘链接:https://pan.baidu.com/s/116JbQZYLz7pIcT8OsHznMQ

提取码:afad

安装D:\Green\VS2015目录

 

17. 安装Visual Studio 2015 运行库:

百度网盘链接:https://pan.baidu.com/s/1Z29Im-2bwYmp0nn9Pd4TEQ

提取码:0yyv

如果安装的编译环境是Visual Studio 2017 精简版或者Visual Studio 2015 精简版,必须安装VC运行库。解压vcRedist.7z之后,双击install.bat安装vc2012、2013、2015的运行库(发行版和调试版),vs2017编译出来的可执行程序和动态库,使用的也是vc2015的运行库。

 

二、准备依赖库及ctk源代码

1. zlib-1.2.11

http://www.zlib.net/zlib-1.2.11.tar.gz

 

2. libpng-1.6.37

http://prdownloads.sourceforge.net/libpng/libpng-1.6.37.tar.gz?download

 

3. openssl-1.1.1d

https://www.openssl.org/source/openssl-1.1.1d.tar.gz

 

4. freeglut-3.2.1

https://sourceforge.net/projects/freeglut/files/freeglut/3.2.1/freeglut-3.2.1.tar.gz/download

 

5. glut-3.7.6

http://user.xmission.com/~nate/glut/glut-3.7.6-src.zip

 

6. jpeg6

http://www.ijg.org/files/jpegsr6b.zip

 

7. tiff-4.0.10

http://download.osgeo.org/libtiff/tiff-4.0.10.tar.gz

 

8. icu-65

https://github.com/unicode-org/icu/releases/download/release-65-1/icu4c-65_1-src.zip

 

9. giflib-5.1.4

https://sourceforge.net/projects/giflib/files/giflib-5.1.4.tar.bz2/download

 

10. openjpeg2.3.1

https://github.com/uclouvain/openjpeg/archive/v2.3.1.tar.gz

 

11. libiconv-1.15

http://ftp.gnu.org/gnu/libiconv/libiconv-1.15.tar.gz

 

12. libxml2

http://xmlsoft.org/sources/libxml2-2.9.9.tar.gz

 

13. dcmtk-3.6.5

https://dicom.offis.de/download/dcmtk/dcmtk365/dcmtk-3.6.5.tar.gz

 

14. VTK-8.2.0

https://www.vtk.org/files/release/8.2/VTK-8.2.0.tar.gz

 

15. InsightToolkit-5.0.1

https://github.com/InsightSoftwareConsortium/ITK/archive/v5.0.1.tar.gz

 

16. OpenIGTLink-3.0

https://github.com/openigtlink/OpenIGTLink/archive/v3.0.tar.gz

 

17. libzmq-4.3.2

https://github.com/zeromq/libzmq/archive/v4.3.2.tar.gz

 

18. QtSOAP-master

git clone https://github.com/commontk/QtSOAP.git

cd QtSOAP

git checkout 7e2af9b

cd ..

ren QtSOAP QtSOAP-master

zip QtSOAP-master.zip QtSOAP-master/*

或者

https://github.com/commontk/QtSOAP/archive/master.zip

更名为QtSOAP-master.zip

 

19. qRestAPI-master

git clone https://github.com/commontk/qRestAPI.git

cd qRestAPI

git checkout ddc0cfc

cd ..

ren qRestAPI qRestAPI-master

zip qRestAPI-master.zip qRestAPI-master/*

或者

https://github.com/commontk/qRestAPI/archive/master.zip

更名为qRestAPI-master.zip

 

20. Log4Qt-patched

https://github.com/commontk/Log4Qt/archive/patched.zip

更名为Log4Qt-patched.zip

 

21. qxmlrpc-patched

https://github.com/commontk/qxmlrpc/archive/patched.zip

更名为qxmlrpc-patched.zip

 

22. Python-3.7.6.tar.xz

https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz

 

23. PythonQt-patched-9

https://github.com/commontk/PythonQt/archive/patched-9.zip

更名为PythonQt-patched-9.zip

 

24. KWSYS

git clone https://gitlab.kitware.com/utils/kwsys.git

cd kwsys

git checkout 3e117fe1

cd ..

ren kwsys kwsys-master

tar cf - kwsys-master|bzip2 > kwsys-master.tar.bz2

或者

https://gitlab.kitware.com/utils/kwsys/-/archive/master/kwsys-master.tar.bz2

 

25. KWStyle-master

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

cd KWStyle

git checkout d0d656e

cd ..

ren KWStyle KWStyle-master

zip KWStyle-master.zip KWStyle-master/*

或者

https://github.com/Kitware/KWStyle/archive/master.zip

更名为KWStyle-master.zip

 

26. QtTesting-master

git clone https://github.com/commontk/QtTesting.git

cd QtTesting

git checkout b5324a2

cd ..

ren QtTesting QtTesting-master

zip QtTesting-master.zip QtTesting-master/*

或者

https://github.com/commontk/QtTesting/archive/master.zip

更名为QtTesting-master.zip

 

27. CTKData-master

git clone https://github.com/commontk/CTKData.git

cd CTKData

git checkout cc07f1f

cd ..

ren CTKData CTKData-master

zip CTKData-master.zip CTKData-master/*

或者

https://github.com/commontk/CTKData/archive/master.zip

更名为CTKData-master.zip

 

28. CTK-master

git clone https://github.com/commontk/CTK.git

cd CTK

git checkout 78341ab

cd ..

ren CTK CTK-master

zip CTK-master.zip CTK-master/*

或者

https://github.com/commontk/CTK/archive/master.zip

更名为CTK-master.zip

 

29. ctkExample-master

https://github.com/Waleon/CTK-examples/archive/master.zip

更名为ctkExample-master.zip

 

30. ctk编译补丁

百度网盘链接:https://pan.baidu.com/s/16GtJQvQB8A4Bx_dR624koQ

提取码:l151

包含对第28项例子代码的修改,上述例子在windows操作系统中无法编译通过。

 

31. 所有ctk依赖库、编译补丁以及ctk源代码的合集

百度网盘链接:https://pan.baidu.com/s/1_YZpjW9zPovs4TLlajNYig

提取码:jzg3

 

三、下载ctk编译补丁

1. vs2017的ctk编译补丁

百度网盘链接:https://pan.baidu.com/s/16GtJQvQB8A4Bx_dR624koQ

提取码:l151

2. vs2015的ctk编译补丁

百度网盘链接:https://pan.baidu.com/s/1hjhURyj68TU0RiPKvh2MVg

提取码:x14k

四、执行编译

将ctk源码以及所有依赖库的非解压文件放到C:\t目录,将“ctk编译补丁.7z”解压到C:\t目录

检查编译批处理1.bat中路径及文件名称是否与第一章“准备编译环境”和第二章“准备依赖库及ctk源代码”中一致,编译批处理中牵涉的路径名称主要有“C:\t\”、 “C:\r\”、 “/c/t”、 “/c/r”、 “C:/ActiveTcl/”等等,确保所有路径及文件名称完全一致的情况下,新建build.bat,内容为:1.bat > a.txt

双击build.bat进行编译,大约几个小时之后,能够编译完成,编译之后的所有文件在C:\r目录下面。如果有错误查看a.txt,查找错误原因,修改之后再次进行编译,或者每个依赖库单独编译。

五、其它说明

ctk编译可以很简单,用不着这么复杂的编译步骤和依赖库;也可以非常复杂,使用的第三方依赖库可多达20几个,当然编译过程也非常漫长和充满挑战。如果需要编译QtWebKit模块的话,必须使用vs2017进行编译,并且在安装Qt时勾选“Qt WebEngine”和“Qt Script”组件;如果不需要的话,也可以使用VS2015进行编译。

使用vs2017进行编译时,给cmake提供参数-G "NMake Makefiles JOM"生成jom形式的NMake Makefiles可以并行编译,纯NMake Makefiles只能单线程顺序编译,无法并行编译,比较耗时。编译批处理通过调用D:\Green\VS2017\VC\Auxiliary\Build\vcvarsx86_amd64.bat设置64位vs2017编译环境,通过调用D:\Green\VS2017\VC\Auxiliary\Build\vcvars32.bat设置32位的编译环境。

使用vs2015进行编译时,给cmake提供参数-G "Visual Studio 14 2015 Win64"生成64位VC++ Project,使用devenv.com进行编译时默认开启多线程编译。

六、相关资源

百度网盘: https://pan.baidu.com/s/1vJR_sksBlFn4nhUyI9Xvwg

提取码:vakg

七、编译补丁中编译批处理文件(VS2017)的主要内容

rem 安装vs2017到D:\Green\VS2017目录、安装Qt5.11.2到C:盘(MSVC 2017 64-bit、Qt Script、Qt WebEngine)、解压Green.7z到D:盘

rem 安装ActivePerl-5.26.3.2603-MSWin32-x64-a95bce075.exe、ActiveTcl-8.6.9.8609.2-MSWin32-x64-5ccbd9ac8.exe、python-3.7.6-amd64.exe(Install for all users、C:\Python37)、cmake-3.16.2-win64-x64.msi(Add CMake to the system PATH for all users)、msmpisdk.msi、msmpisetup.exe

 

 

call D:\Green\VS2017\VC\Auxiliary\Build\vcvarsx86_amd64.bat

 

set path=%path%;D:\Green\msys\usr\bin;D:\Green\git\usr\bin;D:\Green\git\bin;D:\Green\jom

set path=%path%;D:\Green\nasm

set path=%path%;D:\Green\msys\mingw64\bin

set MSYSTEM=MINGW64

set MSYS2_PATH_TYPE=inherit

set path=%path%;C:\Qt\Qt5.11.2\5.11.2\msvc2017_64\bin

 

 

cd C:\t

tar xf zlib-1.2.11.tar.gz

cd C:\t\zlib-1.2.11

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r ..

jom

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

jom install

 

 

cd C:\t

tar xf libpng-1.6.37.tar.gz

cd C:\t\libpng-1.6.37

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r ..

jom

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

jom install

 

 

cd C:\t

tar xf openssl-1.1.1d.tar.gz

cd C:\t\openssl-1.1.1d

rem perl Configure debug-VC-WIN64A --prefix=c:\r

rem nmake

rem nmake test

rem nmake install

perl Configure VC-WIN64A --prefix=c:\r

nmake

nmake test

nmake install

 

 

rem cd C:\t

rem tar xf freeglut-3.2.1.tar.gz

rem cd C:\t\freeglut-3.2.1

rem md b

rem cd b

rem cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r ..

rem jom

rem jom install

rem cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

rem jom

rem jom install

 

 

cd C:\t

unzip -o glut-3.7.6-src.zip

cd C:\t\glut-3.7.6\lib\glut

mkdir C:\r\include\GL

copy /y ..\..\..\glut32.vcxproj .

msbuild glut32.vcxproj /t:build /p:Configuration=Debug /p:Platform=x64

msbuild glut32.vcxproj /t:build /p:Configuration=Release /p:Platform=x64

 

 

cd C:\t

unzip -o jpegsr6b.zip

unzip -o jpeg6bPatch.zip

cd C:\t\jpeg-6b

copy /y ..\jpeg6bPatch\jpeg.vcxproj .

copy /y ..\jpeg6bPatch\jpeg.def .

copy /y ..\jpeg6bPatch\jpegStatic.vcxproj .

copy /y jconfig.vc jconfig.h

msbuild jpeg.vcxproj /t:build /p:Configuration=Debug /p:Platform=x64

msbuild jpeg.vcxproj /t:build /p:Configuration=Release /p:Platform=x64

msbuild jpegStatic.vcxproj /t:build /p:Configuration=Debug /p:Platform=x64

msbuild jpegStatic.vcxproj /t:build /p:Configuration=Release /p:Platform=x64

xcopy /ys Debug\*.lib C:\r\lib

xcopy /ys Debug\*.dll C:\r\bin

xcopy /ys Release\*.lib C:\r\lib

xcopy /ys Release\*.dll C:\r\bin

xcopy /ys jconfig.h C:\r\include

xcopy /ys jerror.h C:\r\include

xcopy /ys jmorecfg.h C:\r\include

xcopy /ys jpeglib.h C:\r\include

 

 

cd C:\t

tar xf tiff-4.0.10.tar.gz

cd C:\t\tiff-4.0.10

md b

cd b

rem 如果前面编译了freeglut,就必须指定debug版本的库名称和忽略特定默认库

rem cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r -DGLUT_glut_LIBRARY_DEBUG:FILEPATH=C:/r/lib/glut32D.lib -DCMAKE_EXE_LINKER_FLAGS_DEBUG:STRING="/debug /INCREMENTAL /NODEFAULTLIB:glut32.lib" ..

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r ..

jom

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

jom install

 

 

cd C:\t

unzip -o icu-65-1.zip

cd C:\t\icu-release-65-1\icu4c

sed -i '/WindowsTargetPlatformVersion/d' source/*/*.vcxproj

sed -i '/WindowsTargetPlatformVersion/d' source/*/*/*.vcxproj

sed -i '/WindowsTargetPlatformVersion/d' source/*/*/*/*.vcxproj

sed -i "s#8.1#10.0.14393.0#g" source/allinone/Build.Windows.ProjectConfiguration.props

rem msbuild source\allinone\allinone.sln /p:Configuration=Debug /p:Platform=Win32 /p:SkipUWP=true

rem py -3执行错误,暂时忽略

msbuild source\allinone\allinone.sln /p:Configuration=Debug /p:Platform=x64 /p:SkipUWP=true

msbuild source\allinone\allinone.sln /p:Configuration=Release /p:Platform=x64 /p:SkipUWP=true

xcopy /yis bin64 C:\r\bin

xcopy /yis include C:\r\include

xcopy /yis lib64 C:\r\lib

 

 

cd C:\t

tar xf giflib-5.1.4.tar.bz2

cd C:\t\giflib-5.1.4

echo cd /c/t/giflib-5.1.4>1.sh

echo ./configure>>1.sh

echo make>>1.sh

echo pexports.exe lib/.libs/libgif-7.dll ^> libgif-7.def>>1.sh

sh.exe -c "/c/t/giflib-5.1.4/1.sh"

lib /machine:x64 /def:libgif-7.def

copy /y libgif-7.lib C:\r\lib

copy /y lib\.libs\libgif-7.dll C:\r\bin

xcopy /ys lib\gif_lib.h C:\r\include

 

 

cd C:\t

tar xf openjpeg-v2.3.1.tar.gz

cd C:\t\openjpeg-2.3.1

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r -DBUILD_SHARED_LIBS:BOOL="1" -DCMAKE_DEBUG_POSTFIX:STRING="D" ..

jom

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

jom install

 

 

cd C:\t

tar xf libiconv-1.15.tar.gz

cd C:\t\libiconv-1.15

echo cd /c/t/libiconv-1.15>1.sh

echo sed -i 's#= INSTALLDIR#= "/c/r";//INSTALLDIR#g' lib/relocatable.c>>1.sh

echo sed -i 's#= INSTALLDIR#= "/c/r";//INSTALLDIR#g' libcharset/lib/relocatable.c>>1.sh

echo sed -i 's#= INSTALLDIR#= "/c/r";//INSTALLDIR#g' srclib/relocatable.c>>1.sh

echo ./configure --prefix=/c/r>>1.sh

echo make install>>1.sh

echo pexports.exe lib/.libs/libiconv-2.dll ^> libiconv-2.def>>1.sh

sh.exe -c "/c/t/libiconv-1.15/1.sh"

lib /machine:x64 /def:libiconv-2.def

copy /y libiconv-2.lib C:\r\lib

copy /y libiconv-2.lib C:\r\lib\iconv.lib

 

 

cd C:\t

tar xf libxml2-2.9.9.tar.gz

cd C:\t\libxml2-2.9.9\win32

cscript configure.js compiler=msvc vcmanifest=yes iconv=yes icu=yes zlib=yes prefix=C:\r include=C:\r\include lib=C:\r\lib

nmake /f Makefile.msvc install

move C:\r\include\libxml2\libxml C:\r\include

rd C:\r\include\libxml2

 

 

cd C:\t

tar xf dcmtk-3.6.5.tar.gz

cd C:\t\dcmtk-3.6.5

sed -i 's/add_definitions("-DLIBXML_STATIC")/#add_definitions("-DLIBXML_STATIC")/g' CMake/3rdparty.cmake

sed -i 's#zlib_d.lib#zlibd.lib#g' CMake/3rdparty.cmake

sed -i 's#zlib_o.lib#zlib.lib#g' CMake/3rdparty.cmake

sed -i 's#libtiff_d.lib#tiffd.lib#g' CMake/3rdparty.cmake

sed -i 's#libtiff_o.lib#tiff.lib#g' CMake/3rdparty.cmake

sed -i 's#libpng_d.lib#libpng16d.lib#g' CMake/3rdparty.cmake

sed -i 's#libpng_o.lib#libpng16.lib#g' CMake/3rdparty.cmake

sed -i 's#libxml2_d.lib#libxml2.lib#g' CMake/3rdparty.cmake

sed -i 's#libxml2_o.lib#libxml2.lib#g' CMake/3rdparty.cmake

sed -i 's#openjp2_d.lib#openjp2D.lib#g' CMake/3rdparty.cmake

sed -i 's#openjp2_o.lib#openjp2.lib#g' CMake/3rdparty.cmake

sed -i 's#libiconv_d.lib#libiconv-2.lib#g' CMake/3rdparty.cmake

sed -i 's#libiconv_o.lib#libiconv-2.lib#g' CMake/3rdparty.cmake

sed -i 's#iconv_d.lib#libiconv-2.lib#g' CMake/3rdparty.cmake

sed -i 's#iconv_o.lib#libiconv-2.lib#g' CMake/3rdparty.cmake

sed -i 's#dcmtkssl_d.lib#libssl.lib#g' CMake/3rdparty.cmake

sed -i 's#dcmtkssl_o.lib#libssl.lib#g' CMake/3rdparty.cmake

sed -i 's#dcmtkcrypto_d.lib#libcrypto.lib#g' CMake/3rdparty.cmake

sed -i 's#dcmtkcrypto_o.lib#libcrypto.lib#g' CMake/3rdparty.cmake

md b

cd b

rem cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:/r -DBUILD_SHARED_LIBS:BOOL="1" -DCMAKE_DEBUG_POSTFIX:STRING="D" -DDCMTK_WITH_PNG:BOOL="1" -DDCMTK_WITH_OPENJPEG:BOOL="1" -DDCMTK_WITH_XML:BOOL="1" -DDCMTK_WITH_OPENSSL:BOOL="1" -DDCMTK_WITH_TIFF:BOOL="1" -DDCMTK_WITH_ZLIB:BOOL="1" -DDCMTK_WITH_ICONV:BOOL="0" -DWITH_ZLIBINC:PATH=C:/r -DWITH_LIBICONVINC:PATH=C:/r -DWITH_LIBPNGINC:PATH=C:/r -DWITH_LIBTIFFINC:PATH=C:/r -DWITH_LIBXMLINC:PATH=C:/r -DWITH_OPENJPEGINC:PATH=C:/r -DWITH_OPENJPEGINC1:PATH=C:/r -DWITH_OPENSSLINC:PATH=C:/r ..

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:/r -DBUILD_SHARED_LIBS:BOOL="1" -DCMAKE_DEBUG_POSTFIX:STRING="D" ^

-DDCMTK_WITH_OPENJPEG:BOOL="1" ^

-DDCMTK_WITH_OPENSSL:BOOL="1" ^

-DDCMTK_WITH_PNG:BOOL="1" ^

-DDCMTK_WITH_XML:BOOL="1" ^

-DDCMTK_WITH_TIFF:BOOL="1" ^

-DDCMTK_WITH_ZLIB:BOOL="1" ^

-DWITH_LIBPNGINC:PATH=C:/r ^

-DWITH_LIBTIFFINC:PATH=C:/r ^

-DWITH_LIBXMLINC:PATH=C:/r ^

-DWITH_OPENJPEGINC:PATH=C:/r ^

-DWITH_OPENJPEGINC1:PATH=C:/r ^

-DWITH_OPENSSLINC:PATH=C:/r ^

-DWITH_ZLIBINC:PATH=C:/r ^

-DCMAKE_CXX_FLAGS:STRING="/DWIN32 /D_WINDOWS /W3 /GR /EHsc /DDCMTK_SHARED" ^

..

jom

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

jom install

 

 

cd C:/t

tar xf VTK-8.2.0.tar.gz

cd C:\t\VTK-8.2.0

sed -i 's/vtkRenderingCore vtkCommonDataModel/vtkRenderingCore vtkRenderingOpenGL2 vtkCommonDataModel/g' Rendering/Tk/CMakeLists.txt

sed -i 's/BUILD_TYPE S/CMAKE_INSTALL_CONFIG_NAME S/g' GUISupport/Qt/PluginInstall.cmake.in

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:/r -DCMAKE_DEBUG_POSTFIX:STRING="D" ^

-DVTK_Group_Imaging:BOOL=1 ^

-DVTK_Group_MPI:BOOL=1 ^

-DVTK_Group_Qt:BOOL="1" ^

-DVTK_Group_Tk:BOOL=1 ^

-DVTK_Group_Views:BOOL=1 ^

-DVTK_Group_Web:BOOL=1 ^

-DVTK_PYTHON_VERSION:STRING=3 ^

-DVTK_WRAP_PYTHON:BOOL=1 ^

-DTCL_LIBRARY=C:/ActiveTcl/lib/tcl86t.lib ^

-DTK_LIBRARY=C:/ActiveTcl/lib/tk86t.lib ^

..

rem 此刻大约有半个多小时的假死状态,请耐心等待,不要做任何动作!!!

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

rem 此刻大约有半个多小时的假死状态,请耐心等待,不要做任何动作!!!

jom install

 

 

cd C:\t

tar xf InsightToolkit-5.0.1.tar.gz

cd C:\t\InsightToolkit-5.0.1

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r -DBUILD_SHARED_LIBS:BOOL="1" -DCMAKE_DEBUG_POSTFIX:STRING="D" -DCMAKE_BUILD_TYPE:STRING=Debug ..

jom

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

jom install

 

 

cd C:\t

tar xf OpenIGTLink-3.0.tar.gz

cd C:\t\OpenIGTLink-3.0

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r -DBUILD_SHARED_LIBS:BOOL="1" -DCMAKE_DEBUG_POSTFIX:STRING="D" -DBUILD_TESTING:BOOL=0 ..

jom

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

jom install

 

 

cd C:\t

tar xf libzmq-4.3.2.tar.gz

cd C:\t\libzmq-4.3.2

md b

cd b

cmake -G "NMake Makefiles" -D CMAKE_INSTALL_PREFIX=c:\r -DBUILD_SHARED_LIBS:BOOL="1" -DCMAKE_DEBUG_POSTFIX:STRING="D" ..

nmake

nmake install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

nmake

nmake install

 

 

cd C:\t

unzip -o QtSOAP-master.zip

cd C:\t\QtSOAP-master

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r -DBUILD_SHARED_LIBS:BOOL="1" -DCMAKE_DEBUG_POSTFIX:STRING="D" -DQtSOAP_QT_VERSION=5 ..

jom

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

copy /y QtSOAPConfig.cmake C:\r\cmake

copy /y UseQtSOAP.cmake C:\r\cmake

copy /y bin\*.dll C:\r\bin

copy /y bin\*.lib C:\r\lib

copy /y ..\src\qtsoap.h C:\r\include

 

 

cd C:\t

unzip -o qRestAPI-master.zip

cd C:\t\qRestAPI-master

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r -DBUILD_SHARED_LIBS:BOOL="1" -DCMAKE_DEBUG_POSTFIX:STRING="D" -DqRestAPI_QT_VERSION=5 ..

jom

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

copy /y *RestAPI*.cmake C:\r\cmake

copy /y *.dll C:\r\bin

copy /y *.lib C:\r\lib

copy /y ..\*.h C:\r\include

 

 

cd C:\t

unzip -o Log4Qt-patched.zip

cd C:\t\Log4Qt-patched

sed -i 's/QtMsgHandler/QtMessageHandler/g' src/log4qt/logmanager.h

sed -i '/qtMessageHandler(QtMsgType/,/pMessage/d' src/log4qt/logmanager.h

sed -i "s/welcome();/welcome();\n\t\tstatic void qtMessageHandler(QtMsgType type, const QMessageLogContext \&, const QString \&pMessage);/g" src/log4qt/logmanager.h

sed -i 's/QtMsgHandler/QtMessageHandler/g' src/log4qt/logmanager.cpp

sed -i 's/qInstallMsgHandler/qInstallMessageHandler/g' src/log4qt/logmanager.cpp

sed -i "s/QtMsgType type, const char \*/QtMsgType type, const QMessageLogContext \&, const QString \&/g" src/log4qt/logmanager.cpp

sed -i 's/STR, pMessage/STR, pMessage.toLocal8Bit().data()/g' src/log4qt/logmanager.cpp

sed -i "s/#include <QtCore\/QHash>/#include <QtCore\/QObject>\n#include <QtCore\/QHash>/g" src/log4qt/helpers/factory.h

sed -i "s/#include <QtCore\/QDebug>/#include <QtCore\/QDebug>\n#include <QtCore\/QDataStream>/g" src/log4qt/level.cpp

sed -i 's/codecForTr/codecForLocale/g' src/log4qt/helpers/logerror.cpp

sed -i 's/, QCoreApplication::UnicodeUTF8//g' src/log4qt/helpers/logerror.cpp

rem sed -i 's/set(BUILD_SHARED_LIBS FALSE)/#set(BUILD_SHARED_LIBS FALSE)/g' CMakeLists.txt

sed -i 's/find_package(Qt4)/set(Log4Qt_QT5_COMPONENTS Core)\nfind_package(Qt5 COMPONENTS ${Log4Qt_QT5_COMPONENTS} REQUIRED)/g'  CMakeLists.txt

sed -i "/QT4_FOUND/,/^endif/d" CMakeLists.txt

sed -i 's/qt4/qt5/g' CMakeLists.txt

rem sed -i 's/set(log4qt_includes/set(log4qt_includes\n  ${Qt5Core_INCLUDE_DIRS}\n/g' CMakeLists.txt

sed -i '$a\target_link_libraries(${PROJECT_NAME} Qt5::Core)' CMakeLists.txt

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r -DBUILD_SHARED_LIBS:BOOL="1" -DCMAKE_DEBUG_POSTFIX:STRING="D" ..

jom

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

jom install

 

 

cd C:\t

unzip -o qxmlrpc-patched.zip

unzip -o qxmlrpc-patched.patch.zip

cd C:\t\qxmlrpc-patched

xcopy /yis ..\qxmlrpc-patched.patch\* .

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r -DBUILD_SHARED_LIBS:BOOL="1" -DCMAKE_DEBUG_POSTFIX:STRING="D" ..

jom

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

xcopy /yis bin\*.lib C:\r\lib

cd ..\xmlrpc

mkdir C:\r\include\xmlrpc

copy /y variant.h C:\r\include\xmlrpc

copy /y client.h C:\r\include\xmlrpc

copy /y server.h C:\r\include\xmlrpc

 

 

cd C:\t

tar xf Python-3.7.6.tar.xz

cd C:\t\Python-3.7.6\PCbuild

sed -i '/DefaultWindowsSDKVersion Condition/d' python.props

sed -i 's/10.0.10586.0/10.0.14393.0/g' *.vcxproj

sed -i "s#PropertyGroup Label=\"Globals\">#PropertyGroup Label=\"Globals\">\n\t<WindowsTargetPlatformVersion>10.0.14393.0</WindowsTargetPlatformVersion>#g" *.vcxproj

devenv.com pcbuild.sln /build "Debug|x64" /project python.vcxproj

devenv.com pcbuild.sln /build "Debug|x64" /project python3dll.vcxproj

copy /y amd64\python3_d.lib C:\Python37\libs

copy /y amd64\python37_d.lib C:\Python37\libs

 

 

cd C:\t

unzip -o PythonQt-patched-9.zip

cd C:\t\PythonQt-patched-9

sed -i '/-DPYTHONQT_USE_RELEASE_PYTHON_FALLBACK/d' CMakeLists.txt

sed -i "s/className()->constData()/className()/g" src/PythonQtClassInfo.cpp

sed -i 's/signature(meta))/signature(meta)/g' src/PythonQtMethodInfo.cpp

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r -DBUILD_SHARED_LIBS:BOOL="1" -DCMAKE_DEBUG_POSTFIX:STRING="D" -DPythonQt_Wrap_Qtxmlpatterns:BOOL=ON -DPythonQt_Wrap_QtAll:BOOL=ON ..

jom

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

jom install

 

 

cd C:\t

unzip -o KWStyle-master.zip

cd C:\t\KWStyle-master

sed -i 's/add_executable/target_link_libraries(KWStyleLib kwssys)\nadd_executable/g' CMakeLists.txt  

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r -DBUILD_SHARED_LIBS:BOOL="0" -DCMAKE_DEBUG_POSTFIX:STRING="D" ..

jom

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

jom install

 

 

cd C:\t

unzip -o QtTesting-master.zip

cd C:\t\QtTesting-master

md b

cd b

cmake -G "NMake Makefiles JOM" -D CMAKE_INSTALL_PREFIX=c:\r -DBUILD_SHARED_LIBS:BOOL="1" -DCMAKE_DEBUG_POSTFIX:STRING="D" -DQtTesting_QT_VERSION=5 ..

jom

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

jom install

 

 

cd C:\t

unzip -o CTKData-master.zip

unzip -o CTK-master.zip

cd C:\t\CTK-master

sed -i "s/ctkCmdLineModuleFuture.h/ctkCmdLineModuleFuture.h>\n#include <QStyle/g" Applications/ctkCommandLineModuleExplorer/ctkCmdLineModuleExplorerProgressWidget.cpp

sed -i 's/CMAKE_DEBUG_POSTFIX/CMAKE_DEBUG_POSTFIX2/g' Utilities/CMake/FindPythonQt.cmake

sed -i 's/CTK_CMAKE_DEBUG_POSTFIX2/CMAKE_DEBUG_POSTFIX/g' Utilities/CMake/FindPythonQt.cmake

sed -i 's/CMAKE_DEBUG_POSTFIX2/CTK_CMAKE_DEBUG_POSTFIX/g' Utilities/CMake/FindPythonQt.cmake

rem CTK_ENABLE_Python_Wrapping打开时,生成的临时文件路径及名称太长,cl编译器命令行参数超长了,出现严重错误,无法编译。

sed -i 's/org.commontk/k/g' CMake/ctkMacroBuildLibWrapper.cmake

md b

cd b

cmake -G "NMake Makefiles JOM" -DCMAKE_INSTALL_PREFIX=c:\r -DCMAKE_DEBUG_POSTFIX:STRING="D" ^

-DBUILD_TESTING:BOOL=OFF ^

-DCTK_QT_VERSION:STRING="5" ^

-DCTKData_DIR=C:\\t\\CTKData-master ^

-DDCMTK_DIR=C:\\t\\dcmtk-3.6.5 ^

-DITK_DIR=C:\\t\\InsightToolkit-5.0.1 ^

-DOpenIGTLink_DIR=C:\\t\\openigtlink-OpenIGTLink-61cb0a8 ^

-DPYTHONQT_INSTALL_DIR=C:\\r ^

-DQtSOAP_DIR=C:\\t\\QtSOAP-master ^

-DQtTesting_DIR=C:\\t\\QtTesting-master ^

-DqRestAPI_DIR=C:\\t\\qRestAPI-master ^

-Dqxmlrpc_DIR=C:\t\qxmlrpc-patched ^

-DVTK_DIR=C:\\t\\VTK-8.2.0 ^

-DZMQ_DIR=C:\\t\\libzmq-4.3.2 ^

-DCTK_BUILD_ALL:BOOL=ON ^

-DCTK_BUILD_ALL_APPS:BOOL=ON ^

-DCTK_BUILD_ALL_LIBRARIES:BOOL=ON ^

-DCTK_BUILD_ALL_PLUGINS:BOOL=ON ^

-DCTK_BUILD_EXAMPLES:BOOL=ON ^

-DCTK_BUILD_QTDESIGNER_PLUGINS:BOOL=ON ^

-DCTK_BUILD_SHARED_LIBS:BOOL=ON ^

-DCTK_ENABLE_DICOM:BOOL=ON ^

-DCTK_ENABLE_DICOMApplicationHosting:BOOL=ON ^

-DCTK_ENABLE_PluginFramework:BOOL=ON ^

-DCTK_ENABLE_Python_Wrapping:BOOL=ON ^

-DCTK_ENABLE_Widgets:BOOL=ON ^

-DCTK_LIB_CommandLineModules/Backend/FunctionPointer:BOOL=ON ^

-DCTK_LIB_CommandLineModules/Backend/LocalProcess:BOOL=ON ^

-DCTK_LIB_CommandLineModules/Backend/XMLChecker:BOOL=ON ^

-DCTK_LIB_CommandLineModules/Core:BOOL=ON ^

-DCTK_LIB_CommandLineModules/Frontend/QtGui:BOOL=ON ^

-DCTK_LIB_CommandLineModules/Frontend/QtWebKit:BOOL=ON ^

-DCTK_LIB_Core:BOOL=ON ^

-DCTK_LIB_DICOM/Core:BOOL=ON ^

-DCTK_LIB_DICOM/Widgets:BOOL=ON ^

-DCTK_LIB_ImageProcessing/ITK/Core:BOOL=ON ^

-DCTK_LIB_PluginFramework:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTALL:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTCORE:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTGUI:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTNETWORK:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTOPENGL:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTPRINTSUPPORT:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTSQL:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTSVG:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTUITOOLS:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTWEBKIT:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTWEBKITWIDGETS:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTWIDGETS:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTXML:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Core_PYTHONQT_WRAP_QTXMLPATTERNS:BOOL=ON ^

-DCTK_LIB_Scripting/Python/Widgets:BOOL=ON ^

-DCTK_LIB_Visualization/VTK/Core:BOOL=ON ^

-DCTK_LIB_Visualization/VTK/Widgets:BOOL=ON ^

-DCTK_LIB_Visualization/VTK/Widgets_USE_TRANSFER_FUNCTION_CHARTS:BOOL=ON ^

-DCTK_LIB_Widgets:BOOL=ON ^

-DCTK_LIB_XNAT/Core:BOOL=ON ^

-DCTK_LIB_XNAT/Widgets:BOOL=ON ^

-DCTK_PLUGIN_org.commontk.configadmin:BOOL=ON ^

-DCTK_PLUGIN_org.commontk.dah.cmdlinemoduleapp:BOOL=ON ^

-DCTK_PLUGIN_org.commontk.dah.core:BOOL=ON ^

-DCTK_PLUGIN_org.commontk.dah.exampleapp:BOOL=ON ^

-DCTK_PLUGIN_org.commontk.dah.examplehost:BOOL=ON ^

-DCTK_PLUGIN_org.commontk.dah.host:BOOL=ON ^

-DCTK_PLUGIN_org.commontk.dah.hostedapp:BOOL=ON ^

-DCTK_PLUGIN_org.commontk.eventadmin:BOOL=ON ^

-DCTK_PLUGIN_org.commontk.log:BOOL=ON ^

-DCTK_PLUGIN_org.commontk.metatype:BOOL=ON ^

-DCTK_PLUGIN_org.commontk.plugingenerator.core:BOOL=ON ^

-DCTK_PLUGIN_org.commontk.plugingenerator.ui:BOOL=ON ^

-DCTK_USE_QTTESTING:BOOL=ON ^

-DCTK_USE_KWSTYLE:BOOL=ON ^

-DCTK_USE_SYSTEM_KWStyle:BOOL=ON ^

..

rem sed -i 's#C:\\t\\CTK-master\\Libs\\PluginFramework;#C:\\t\\CTK-master\\Libs\\PluginFramework;C:\\t\\CTK-master\\Libs\\Core#g' CTK-build\Plugins\org.commontk.eventadmin\Testing\Cpp\org_commontk_eventadminCppTests.vcxproj

xcopy /yis ..\Libs\Core\ctkCompilerDetections_p.h CTK-build\Libs\PluginFramework\

jom

jom install

cmake -DCMAKE_BUILD_TYPE:STRING=Release ..

jom

jom install

copy /y CTK-build\bin\*.exe C:\r\bin

xcopy /yis CTK-build\bin\*.lib C:\r\lib\ctk-0.1

xcopy /yis CTK-build\bin\*.dll C:\r\bin

xcopy /yis CTK-build\bin\Python C:\r\bin\Python

xcopy /yis CTK-build\Libs\*Export.h C:\r\include\ctk

xcopy /yis CTK-build\Plugins\*Export.h C:\r\include\ctk

xcopy /yis ..\libs\*.h C:\r\include\ctk

xcopy /yis ..\Plugins\*.h C:\r\include\ctk

 

cd C:\t

unzip -o ctkExample.zip

cd ctkExample

qmake

nmake

 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值