前置
sudo apt install screen
sudo apt install build-essential gcc-13 g++-13 cpp-13 gcc-13-plugin-dev
sudo apt install g++-13-multilib
sudo apt install libssl-dev libpng-dev libtiff-dev libwrap0-dev zlib1g-dev libxml2-dev
screen 使用(vtk编译太慢,挂后台慢慢编译)
//开启
scrren -S dcmtk
//后台运行
ctrl+a
d
//查看列表
screen -ls
//恢复
screen -r dcmtk
dcmtk编译
sudo apt remove libdcmtk-dev
git clone https://github.com/DCMTK/dcmtk.git
cd dcmtk
git checkout DCMTK-3.6.7
mkdir build && cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX=/opt/dcmtk \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_BUILD_TYPE=Release
screen -S dcmtk
make -j2 > ../make.log
ctrl +a +d
sudo make install
sudo ldconfig
GDCM 编译
git clone https://github.com/malaterre/GDCM.git
cd GDCM
git checkout v3.0.24
mkdir build && cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DGDCM_USE_VTK=OFF \
-DGDCM_BUILD_APPLICATIONS=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local
screen -S gdcm
make -j2 > ../make.log
ctrl +a +d
sudo make install
sudo ldconfig
vtk 编译
git clone https://gitlab.kitware.com/vtk/vtk.git
cd vtk && git checkout v9.6.0
mkdir build && cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DVTK_GROUP_ENABLE_Qt=YES \
-DQt6_DIR=/usr/lib/x86_64-linux-gnu/cmake/Qt6 \
-DVTK_MODULE_ENABLE_VTK_GUISupportQtQuick=NO \
-DCMAKE_INSTALL_PREFIX=/usr/local
screen -S vtk
make -j2 > ../make.log
ctrl +a +d
sudo make install
sudo ldconfig
vtk-dicom编译 使用gdcm解码
git clone https://github.com/dgobbi/vtk-dicom.git
cd vtk-dicom
//下面的tag可以从vtk 源码 Remote/vtkDICOM.remote.cmake 里拿到
git checkout d1e25090f354542d7bd85c08ee36d8dc22bbbcd8
mkdir build && cd build
//GDCM
cmake .. \
-DVTK_DIR=/usr/local/lib/cmake/vtk-9.6 \
-DCMAKE_BUILD_TYPE=Release \
-DUSE_GDCM=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local
screen -S vtk_dicom
make -j2 > ../make.log
ctrl +a +d
sudo make install
sudo ldconfig
上面编译后的路径
/opt/dcmtk/include/dcmtk
/usr/local/include/vtk-9.6
CMakeList.txt里追加
下面项目名是DicomViewer 添加了qt6 dcmtk vtk依赖
(gdcm 是解码的,vtk-dicom里调用了,放到了vtk下)
find_package(Qt6 REQUIRED COMPONENTS Widgets)
set(DCMTK_DIR "/opt/dcmtk/lib/cmake/dcmtk")
set(VTK_DIR "/usr/local/lib/cmake/vtk-9.6")
find_package(DCMTK REQUIRED)
find_package(VTK REQUIRED COMPONENTS
CommonCore
CommonDataModel
IOImage
ImagingCore
RenderingCore
RenderingOpenGL2
RenderingVolumeOpenGL2
InteractionStyle
RenderingQt
)
qt_standard_project_setup()
execute_process(COMMAND python gen_src.py)
include(source_list.cmake)
add_executable(DicomViewer_exe ${SRC})
add_executable(DicomViewer::exe ALIAS DicomViewer_exe)
set_property(TARGET DicomViewer_exe PROPERTY OUTPUT_NAME DicomViewer)
target_compile_features(DicomViewer_exe PRIVATE cxx_std_17)
target_link_libraries(DicomViewer_exe
PRIVATE
Qt6::Widgets
DCMTK::DCMTK
VTK::CommonCore
VTK::CommonDataModel
VTK::IOImage
VTK::ImagingCore
VTK::RenderingCore
VTK::RenderingOpenGL2
VTK::RenderingVolumeOpenGL2
VTK::InteractionStyle
VTK::RenderingQt
)
# ---- Install rules ----