My solution.

Compilation and installation of DCMTK

Moderator: Moderator Team

Post Reply
Message
Author
yuhong
Posts: 10
Joined: Thu, 2005-04-21, 16:08
Location: Heidelberg, Germany

My solution.

#1 Post by yuhong »

Hi, everyone,

I wrote my CMakeLists.txt which is the combination of dcmtk-3.5.3\CMakeLists.txt, dcmtk-3.5.3\dcmdata\CMakeLists.txt , and dcmtk-3.5.3\dcmdata\apps\CMakeLists.txt. Then I had CMake generate the VS6 project file and it works.

Here is the CMakeLists.txt:

# declare project
PROJECT(TEST)




# set DCMTK Source directory
SET(dcmtk_SOURCE_DIR C:/DCMTK/dcmtk-3.5.3)




# define user configurable options and paths to external libraries which might be used
# libxml support
OPTION(WITH_LIBXML "Turn support for libxml on/off" OFF)
FIND_PATH(WITH_LIBXMLINC "include/libxml/parser.h" ${dcmtk_SOURCE_DIR}/../libxml2-2.5.7)
# libpng support
OPTION(WITH_LIBPNG "Turn support for libpng on/off" ON)
FIND_PATH(WITH_LIBPNGINC "include/png.h" ${dcmtk_SOURCE_DIR}/../libpng-1.2.5)
# libtiff support
OPTION(WITH_LIBTIFF "Turn support for libtiff on/off" ON)
FIND_PATH(WITH_LIBTIFFINC "include/tiff.h" ${dcmtk_SOURCE_DIR}/../tiff-3.6.1)
# openssl support
OPTION(WITH_OPENSSL "Turn support for openssl on/off" OFF)
FIND_PATH(WITH_OPENSSLINC "include/openssl/ssl.h" ${dcmtk_SOURCE_DIR}/../openssl-0.9.7d)
# zlib support
OPTION(WITH_ZLIB "Turn support for zlib on/off" ON)
FIND_PATH(WITH_ZLIBINC "include/zlib.h" ${dcmtk_SOURCE_DIR}/../zlib-1.2.1)

# set certain project wide flags
SET(CMAKE_C_FLAGS "" CACHE STRING "Flags for C compiler." FORCE)
SET(CMAKE_C_FLAGS_DEBUG "/nologo /MTd /W3 /GX /Z7 /Od /GR- /YX" CACHE STRING "Win32 Debug Options C Code" FORCE)
SET(CMAKE_C_FLAGS_RELEASE "/nologo /MT /W3 /GX /O2 /GR- /YX" CACHE STRING "Win32 Release Options C Code" FORCE)
SET(CMAKE_CXX_FLAGS "" CACHE STRING "Flags used by the compiler during all build types." FORCE)
SET(CMAKE_CXX_FLAGS_DEBUG "/nologo /MTd /W3 /GX /Z7 /Od /GR- /YX" CACHE STRING "Win32 Debug Options C++ Code" FORCE)
SET(CMAKE_CXX_FLAGS_RELEASE "/nologo /MT /W3 /GX /O2 /GR- /YX" CACHE STRING "Win32 Release Options C++ Code" FORCE)
SET(CMAKE_EXE_LINKER_FLAGS "/INCREMENTAL:NO" CACHE STRING "Win32 Linker Flags" FORCE)

# set _REENTRANT flag
ADD_DEFINITIONS(-D_REENTRANT)

# set precompiler switches according to settings
# libxml support
IF(WITH_LIBXML)
ADD_DEFINITIONS(-DWITH_LIBXML)
ENDIF(WITH_LIBXML)
# libpng support
IF(WITH_LIBPNG)
ADD_DEFINITIONS(-DWITH_LIBPNG)
ENDIF(WITH_LIBPNG)
# libtiff support
IF(WITH_LIBTIFF)
ADD_DEFINITIONS(-DWITH_LIBTIFF)
ENDIF(WITH_LIBTIFF)
# openssl support
IF(WITH_OPENSSL)
ADD_DEFINITIONS(-DWITH_OPENSSL)
ENDIF(WITH_OPENSSL)
# zlib support
IF(WITH_ZLIB)
ADD_DEFINITIONS(-DWITH_ZLIB)
ENDIF(WITH_ZLIB)





# declare include directories
INCLUDE_DIRECTORIES(${dcmtk_SOURCE_DIR}/config/include
${dcmtk_SOURCE_DIR}/ofstd/include
${dcmtk_SOURCE_DIR}/dcmdata/include)

# declare additional include directories
IF(WITH_ZLIB)
INCLUDE_DIRECTORIES(${WITH_ZLIBINC}/include)
ENDIF(WITH_ZLIB)
IF(WITH_LIBXML)
INCLUDE_DIRECTORIES(${WITH_LIBXMLINC}/include/libxml)
ENDIF(WITH_LIBXML)
IF(WITH_LIBPNG)
INCLUDE_DIRECTORIES(${WITH_LIBPNGINC}/include)
ENDIF(WITH_LIBPNG)
IF(WITH_LIBTIFF)
INCLUDE_DIRECTORIES(${WITH_LIBTIFFINC}/include)
ENDIF(WITH_LIBTIFF)
IF(WITH_OPENSSL)
INCLUDE_DIRECTORIES(${WITH_OPENSSLINC}/include/openssl)
ENDIF(WITH_OPENSSL)

# declare directories containing used libraries
LINK_DIRECTORIES(${dcmtk_SOURCE_DIR}/ofstd/libsrc/Debug
${dcmtk_SOURCE_DIR}/dcmdata/libsrc/Debug)

# declare directories containing additional used libraries
IF(WITH_ZLIB)
LINK_DIRECTORIES(${WITH_ZLIBINC}/lib)
ENDIF(WITH_ZLIB)
IF(WITH_LIBXML)
LINK_DIRECTORIES(${WITH_LIBXMLINC}/lib)
ENDIF(WITH_LIBXML)
IF(WITH_LIBPNG)
LINK_DIRECTORIES(${WITH_LIBPNGINC}/lib)
ENDIF(WITH_LIBPNG)
IF(WITH_LIBTIFF)
LINK_DIRECTORIES(${WITH_LIBTIFFINC}/lib)
ENDIF(WITH_LIBTIFF)
IF(WITH_OPENSSL)
LINK_DIRECTORIES(${WITH_OPENSSLINC}/lib)
ENDIF(WITH_OPENSSL)




# declare executables
ADD_EXECUTABLE(Test test)

# make sure executables are linked to the corresponding libraries
# dcmdump
IF(WITH_ZLIB)
TARGET_LINK_LIBRARIES(Test netapi32 wsock32 ofstd dcmdata debug zlib_d optimized zlib_o)
ELSE(WITH_ZLIB)
TARGET_LINK_LIBRARIES(Test netapi32 wsock32 ofstd dcmdata)
ENDIF(WITH_ZLIB)

# recurse into subdirectories
#SUBDIRS(libsrc apps)


This is the test.cpp:

#include <dctk.h>

void main()
{
DcmFileFormat fileformat;
OFCondition status = fileformat.loadFile("dicom-001-00001.dcm");
if (status.good())
{
OFString patientsName;
DcmDataset *ds = fileformat.getDataset();
if (ds->findAndGetOFString(DCM_PatientsName, patientsName).good())
{
cout << "Patient's Name: " << patientsName << endl;
} else
cerr << "Error: cannot access Patient's Name!" << endl;
} else
cerr << "Error: cannot read DICOM file (" << status.text() << ")" << endl;
}



Hope it will be useful for beginner!

Have fun! :D

Yuhong :
________
Nevada medical marijuana
________
RHODE ISLAND MARIJUANA DISPENSARY
Last edited by yuhong on Sat, 2011-02-12, 16:03, edited 2 times in total.

jayition
Posts: 18
Joined: Thu, 2005-04-21, 04:23
Location: China
Contact:

Thanks!

#2 Post by jayition »

Thanks for U'r help! I think it is useful for us-- I'm beginner!
Love programming!
My Blog is:
http://pacs.coocn.org

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest