一、准备编译环境
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:
解压覆盖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:
解压并更名为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:
解压到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
需要创建ActiveState账号,下面是登陆之后的链接,不知道是否有效。
或者百度网盘:https://pan.baidu.com/s/1iVGuPBXWN3YXXBtNJOw-tg
提取码:i0dc
11. ActiveTcl-8.6.9.8609.2-MSWin32-x64-5ccbd9ac8
需要创建ActiveState账号,下面是登陆之后的链接,不知道是否有效。
或者百度网盘: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