系列索引:CTK框架入门教程索引
在CTK入门教程02:Windows下编译 中,我们介绍了如何在Windows下编译CTK框架。但是编译的结果无法直接使用,比如说头文件整合。
本文使用Windows下vcpkg工具简化编译、部署流程。需要添加ctk对应port,包括vcpkg.json、protfile.cmake、ctk_link_libraries.patch。一般位于vcpkg/ports/ctk/
。
vcpkg.json1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 { "name" : "ctk" , "version" : "2023-07-13" , "description" : "A set of common support code for medical imaging, surgical navigation, and related purposes." , "homepage" : "https://commontk.org/" , "license" : "Apache-2.0" , "dependencies" : [ "dcmtk" , "qt5-multimedia" , "qt5-script" , "qt5-tools" , "qt5-xmlpatterns" , { "name" : "vcpkg-cmake" , "host" : true } , { "name" : "vcpkg-cmake-config" , "host" : true } ] }
portfile.cmake1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO commontk/CTK REF 60 a0740f228633f118698b4526256a4c2110ce81 SHA512 ca04912ed516020c998865e877cb7df2e7f7758cb21346997ca4fcd76ebbbf6c4670ac4d51c03b5a7f6a7ed4ccc0d90096ae0ab566ee96c2b073826af0cc9ad8 HEAD_REF master )if (VCPKG_TARGET_IS_WINDOWS) vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCTK_APP_ctkDICOM=ON -DCTK_APP_ctkDICOM2=ON -DCTK_APP_ctkDICOMDemoSCU=ON -DCTK_APP_ctkDICOMHost=ON -DCTK_APP_ctkDICOMIndexer=ON -DCTK_APP_ctkDICOMObjectViewer=ON -DCTK_APP_ctkDICOMQuery=ON -DCTK_APP_ctkDICOMQueryRetrieve=ON -DCTK_APP_ctkDICOMRetrieve=ON -DCTK_APP_ctkExampleHost=ON -DCTK_APP_ctkExampleHostedApp=ON -DCTK_APP_ctkPluginBrowser=ON -DCTK_APP_ctkPluginGenerator=ON -DCTK_APP_ctkXnatTreeBrowser=ON -DCTK_SUPERBUILD=ON -DCTK_USE_QTTESTING=OFF -DCTK_USE_SYSTEM_VTK=OFF -DCTK_USE_SYSTEM_DCMTK=ON -DCTK_USE_SYSTEM_ITK=OFF -DCTK_BUILD_QTDESIGNER_PLUGINS=OFF -DCTK_BUILD_SHARED_LIBS=ON -DCTK_ENABLE_DICOM=ON -DCTK_ENABLE_DICOMApplicationHosting=ON -DCTK_ENABLE_PluginFramework=ON -DCTK_ENABLE_Widgets=ON -DCTK_LIB_CommandLineModules/Backend/FunctionPointer=ON -DCTK_LIB_CommandLineModules/Backend/LocalProcess=ON -DCTK_LIB_CommandLineModules/Backend/XMLChecker=ON -DCTK_LIB_CommandLineModules/Core=ON -DCTK_LIB_CommandLineModules/Frontend/QtGui=OFF -DCTK_LIB_CommandLineModules/Frontend/QtWebkit=OFF -DCTK_LIB_Widgets=ON -DCTK_LIB_Core=ON -DCTK_LIB_DICOM/Core=ON -DCTK_LIB_DICOM/Widgets=ON -DCTK_LIB_ImageProcessing/ITK/Core=OFF -DCTK_LIB_PluginFramework=ON -DCTK_LIB_Visualization/VTK/Core=OFF -DCTK_LIB_Visualization/VTK/Widgets=OFF -DCTK_LIB_XNAT/Core=ON -DCTK_LIB_XNAT/Widgets=ON -DCTK_PLUGIN_org.commontk.configadmin=ON -DCTK_PLUGIN_org.commontk.dah.cmdlinemoduleapp=ON -DCTK_PLUGIN_org.commontk.dah.core=ON -DCTK_PLUGIN_org.commontk.dah.exampleapp=ON -DCTK_PLUGIN_org.commontk.dah.examplehost=ON -DCTK_PLUGIN_org.commontk.dah.host=ON -DCTK_PLUGIN_org.commontk.dah.hostedapp=ON -DCTK_PLUGIN_org.commontk.eventadmin=ON -DCTK_PLUGIN_org.commontk.log=ON -DCTK_PLUGIN_org.commontk.metatype=ON -DCTK_PLUGIN_org.commontk.plugingenerator.core=ON -DCTK_PLUGIN_org.commontk.plugingenerator.ui=ON )elseif (VCPKG_TARGET_IS_LINUX) vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCTK_APP_ctkDICOM=ON -DCTK_APP_ctkDICOM2=ON -DCTK_APP_ctkDICOMDemoSCU=ON -DCTK_APP_ctkDICOMHost=ON -DCTK_APP_ctkDICOMIndexer=ON -DCTK_APP_ctkDICOMObjectViewer=ON -DCTK_APP_ctkDICOMQuery=ON -DCTK_APP_ctkDICOMQueryRetrieve=ON -DCTK_APP_ctkDICOMRetrieve=ON -DCTK_APP_ctkExampleHost=ON -DCTK_APP_ctkExampleHostedApp=ON -DCTK_APP_ctkPluginBrowser=ON -DCTK_APP_ctkPluginGenerator=ON -DCTK_APP_ctkQtTesting=OFF -DCTK_APP_ctkXnatTreeBrowser=ON -DCTK_SUPERBUILD=ON -DCTK_USE_SYSTEM_VTK=OFF -DCTK_USE_SYSTEM_DCMTK=ON -DCTK_USE_SYSTEM_ITK=OFF -DCTK_BUILD_QTDESIGNER_PLUGINS=OFF -DCTK_BUILD_SHARED_LIBS=ON -DCTK_ENABLE_DICOM=ON -DCTK_ENABLE_DICOMApplicationHosting=ON -DCTK_ENABLE_PluginFramework=ON -DCTK_ENABLE_Widgets=ON -DCTK_LIB_CommandLineModules/Backend/FunctionPointer=ON -DCTK_LIB_CommandLineModules/Backend/LocalProcess=ON -DCTK_LIB_CommandLineModules/Backend/XMLChecker=ON -DCTK_LIB_CommandLineModules/Core=ON -DCTK_LIB_CommandLineModules/Frontend/QtGui=OFF -DCTK_LIB_CommandLineModules/Frontend/QtWebkit=OFF -DCTK_LIB_Widgets=ON -DCTK_LIB_Core=ON -DCTK_LIB_Core_WITH_BFD_SHARED=OFF -DCTK_LIB_DICOM/Core=ON -DCTK_LIB_DICOM/Widgets=ON -DCTK_LIB_ImageProcessing/ITK/Core=OFF -DCTK_LIB_PluginFramework=ON -DCTK_LIB_Visualization/VTK/Core=OFF -DCTK_LIB_Visualization/VTK/Widgets=OFF -DCTK_LIB_XNAT/Core=ON -DCTK_LIB_XNAT/Widgets=ON -DCTK_PLUGIN_org.commontk.configadmin=ON -DCTK_PLUGIN_org.commontk.dah.cmdlinemoduleapp=ON -DCTK_PLUGIN_org.commontk.dah.core=ON -DCTK_PLUGIN_org.commontk.dah.exampleapp=ON -DCTK_PLUGIN_org.commontk.dah.examplehost=ON -DCTK_PLUGIN_org.commontk.dah.host=ON -DCTK_PLUGIN_org.commontk.dah.hostedapp=ON -DCTK_PLUGIN_org.commontk.eventadmin=ON -DCTK_PLUGIN_org.commontk.log=ON -DCTK_PLUGIN_org.commontk.metatype=ON -DCTK_PLUGIN_org.commontk.plugingenerator.core=ON -DCTK_PLUGIN_org.commontk.plugingenerator.ui=ON )endif () vcpkg_cmake_install()if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release" ) file (COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/CTK-build/bin" DESTINATION "${CURRENT_PACKAGES_DIR}/" FILES_MATCHING PATTERN *.exe) file (COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/CTK-build/bin/" DESTINATION "${CURRENT_PACKAGES_DIR}/lib/" FILES_MATCHING PATTERN *.lib) file (COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/CTK-build/bin" DESTINATION "${CURRENT_PACKAGES_DIR}/" FILES_MATCHING PATTERN *.dll)endif ()if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug" ) file (COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/CTK-build/bin" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/" FILES_MATCHING PATTERN *.exe) file (COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/CTK-build/bin/" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib/" FILES_MATCHING PATTERN *.lib) file (COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/CTK-build/bin" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/" FILES_MATCHING PATTERN *.dll) file (COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/CTK-build/bin" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/" FILES_MATCHING PATTERN *.pdb)endif ()file (COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/CTK-build/Libs/Core/ctkCoreExport.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/ctk/" )file (COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/CTK-build/Libs/PluginFramework/ctkPluginFrameworkExport.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/ctk/" )file (COPY "${SOURCE_PATH}/Libs/Core" DESTINATION "${CURRENT_PACKAGES_DIR}/include/ctk/Libs" FILES_MATCHING PATTERN *.h)file (COPY "${SOURCE_PATH}/Libs/PluginFramework" DESTINATION "${CURRENT_PACKAGES_DIR}/include/ctk/Libs" FILES_MATCHING PATTERN *.h)file (COPY "${SOURCE_PATH}/Libs/Widgets" DESTINATION "${CURRENT_PACKAGES_DIR}/include/ctk/Libs" FILES_MATCHING PATTERN *.h) vcpkg_fixup_pkgconfig() vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE" )
ctk_link_libraries.patch1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 From d1f18aa8bcae5e526e01dcfaa10ce283220c6f57 Mon Sep 17 00:00:00 2001 From: Jackey Lea <1768478912@qq.com> Date: Thu, 28 Nov 2024 15:22:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BA=93=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+)@@ -946,6 +946,12 @@ if(BUILD_TESTING) list(APPEND CTK_DEPENDENCIES CTKData) endif() +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + link_directories("D:/JackeyLea/vcpkg/packages/dcmtk_x64-windows/debug/lib") +else() + link_directories("D:/JackeyLea/vcpkg/packages/dcmtk_x64-windows/lib") +endif() + #----------------------------------------------------------------------------- # Check out the ExternalProjectsContrib repository if(CTK_USE_CONTRIBUTED_PLUGINS)-- 2.47.1.windows.1
编译将文件放置于指定位置,执行命令编译
1 vcpkg install ctk:x64-windows
我打算把port添加到vcpkg仓库,但是根据单元测试 结果,只有少数几个平台通过测试。但是Windows/Linux平台还是可以的。