File: CMakeLists.txt

package info (click to toggle)
vtk-dicom 0.8.17-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,176 kB
  • sloc: cpp: 113,811; python: 2,041; makefile: 43; tcl: 10
file content (117 lines) | stat: -rw-r--r-- 4,175 bytes parent folder | download | duplicates (2)
1
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
set(TEST_SRCS
  TestDICOMCharacterSet.cxx
  TestDICOMDictionary.cxx
  TestDICOMFilePath.cxx
  TestDICOMItem.cxx
  TestDICOMMetaData.cxx
  TestDICOMSequence.cxx
  TestDICOMTagPath.cxx
  TestDICOMUtilities.cxx
  TestDICOMValue.cxx
  TestDICOMVM.cxx
  TestDICOMVR.cxx
)

if(DEFINED VTK_MODULE_ENABLE_VTK_DICOM AND NOT DICOM_EXTERNAL_BUILD)
  # When building as a remote module for VTK 9 (or VTK 8.90+)
  vtk_add_test_cxx(vtkDICOMCxxTests TEST_NAMES NO_VALID ${TEST_SRCS})
  vtk_test_cxx_executable(vtkDICOMCxxTests TEST_NAMES)

elseif(Module_vtkDICOM)
  # When building as a remote module for older versions of VTK
  vtk_add_test_cxx(vtkDICOMCxxTests TEST_NAMES NO_VALID ${TEST_SRCS})
  vtk_test_cxx_executable(vtkDICOMCxxTests TEST_NAMES)

else()

include_directories(${DICOM_INCLUDE_DIRS})
add_definitions(-DVTK_DICOM_SEPARATE_TESTS)

set(BASE_LIBS ${VTK_DICOM_LINK_TARGET} ${VTK_LIBS})

foreach(_src ${TEST_SRCS})
  get_filename_component(_test ${_src} NAME_WE)
  add_executable(${_test} ${_src})
  target_link_libraries(${_test} ${BASE_LIBS})
  get_target_property(_pth ${_test} RUNTIME_OUTPUT_DIRECTORY)
  add_test(${_test} ${_pth}/${_test})
endforeach()

if(BUILD_PYTHON_WRAPPERS)
  # For VTK 9 and up, executable targets use VTK:: namespace prefix
  if(VTK_VERSION VERSION_LESS 8.90)
    set(_vtk vtk)
    set(_python_module_path "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
  else()
    set(_vtk VTK::)
    set(_python_module_path "${CMAKE_BINARY_DIR}/${python_destination}")
  endif()
  if(NOT VTK_PYTHON_EXE)
    get_target_property(WRAP_PYTHON_PATH ${_vtk}WrapPython
                        LOCATION_<CONFIG>)
    get_filename_component(VTK_EXE_DIR ${WRAP_PYTHON_PATH} PATH)
    find_program(VTK_PYTHON_EXE vtkpython "${VTK_EXE_DIR}")
  endif()
  if(NOT VTK_PYTHON_EXE)
    # fall back to using python rather than vtkpython
    find_package(Python${VTK_PYTHON_VERSION} QUIET COMPONENTS Interpreter)
    set(VTK_PYTHON_EXE ${Python${VTK_PYTHON_VERSION}_EXECUTABLE})
  endif()
  add_test(TestDICOMPython "${VTK_PYTHON_EXE}"
    "${CMAKE_CURRENT_SOURCE_DIR}/TestDICOMPython.py")
  if(NOT CMAKE_CONFIGURATION_TYPES)
    set_tests_properties(TestDICOMPython PROPERTIES ENVIRONMENT
      "PYTHONPATH=${_python_module_path}")
  endif()
endif()

if(BUILD_TCL_WRAPPERS)
  if(CMAKE_CONFIGURATION_TYPES)
    if(NOT VTK_TCL_EXE)
      get_target_property(WRAP_TCL_PATH vtkWrapTcl LOCATION_<CONFIG>)
      get_filename_component(VTK_EXE_DIR ${WRAP_TCL_PATH} PATH)
      find_program(VTK_TCL_EXE vtk "${VTK_EXE_DIR}")
    endif()
    if(NOT VTK_TCL_EXE)
      # fall back to using tclsh
      set(VTK_TCL_EXE ${TCL_TCLSH})
    endif()
    add_test(TestDICOMTcl "${VTK_TCL_EXE}"
      "${CMAKE_CURRENT_SOURCE_DIR}/TestDICOMTcl.tcl")
  else()
    add_test(TestDICOMTcl "${TCL_TCLSH}"
      "${CMAKE_CURRENT_SOURCE_DIR}/TestDICOMTcl.tcl")
    set_tests_properties(TestDICOMTcl PROPERTIES ENVIRONMENT
      "TCLLIBPATH={${VTK_DIR}/Wrapping/Tcl} {${CMAKE_LIBRARY_OUTPUT_DIRECTORY}}")
  endif()
endif()

if(DUMMY_BUILD_JAVA_WRAPPERS)
  set(_sep ":")
  if(WIN32)
    set(_sep "\\;")
  endif()
  configure_file("${CMAKE_CURRENT_SOURCE_DIR}/TestDICOMJava.java.in"
    "${CMAKE_CURRENT_BINARY_DIR}/TestDICOMJava.java" @ONLY)
  add_custom_command(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/javac_test_stamp.txt
    COMMAND ${JAVA_COMPILE} ${JAVAC_OPTIONS}
    -source ${VTK_JAVA_SOURCE_VERSION}
    -target ${VTK_JAVA_TARGET_VERSION}
    -classpath "${VTK_JAR_PATH}/vtkdicom.jar${_sep}${DICOM_BINARY_DIR}/java${_sep}${VTK_JAVA_JAR}"
    -sourcepath ${CMAKE_CURRENT_SOURCE_DIR}
    -d ${CMAKE_CURRENT_BINARY_DIR}
    ${CMAKE_CURRENT_BINARY_DIR}/TestDICOMJava.java
    COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/javac_test_stamp.txt
    DEPENDS vtkDICOMJavaJar
    "${CMAKE_CURRENT_BINARY_DIR}/TestDICOMJava.java"
    COMMENT "Compiling Java Tests"
    )
  add_custom_target(DICOMJavaTests ALL DEPENDS
    ${CMAKE_CURRENT_BINARY_DIR}/javac_test_stamp.txt ${JAVA_LIBRARIES})
  add_test(TestDICOMJava "${JAVA_RUNTIME}"
    -classpath "${VTK_JAR_PATH}/vtkdicom.jar${_sep}${DICOM_BINARY_DIR}/java${_sep}${VTK_JAVA_JAR}${_sep}${CMAKE_CURRENT_BINARY_DIR}"
    TestDICOMJava)
endif()

endif()