From 0ffb612fa350791ea6de473a5c5a1fd965f80227 Mon Sep 17 00:00:00 2001 From: malaterre Date: Sat, 15 May 2004 21:30:32 +0000 Subject: [PATCH] ENH: Some more steps toward automatic Python+gdcm testing --- gdcmPython/CMakeLists.txt | 72 +++++++++++++++++++++++++++------- gdcmPython/demo/CMakeLists.txt | 23 +++++++++++ 2 files changed, 81 insertions(+), 14 deletions(-) create mode 100644 gdcmPython/demo/CMakeLists.txt diff --git a/gdcmPython/CMakeLists.txt b/gdcmPython/CMakeLists.txt index a75ed020..9c0f9e0d 100644 --- a/gdcmPython/CMakeLists.txt +++ b/gdcmPython/CMakeLists.txt @@ -5,12 +5,7 @@ INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_PATH} ${GDCM_BINARY_DIR}/ ) - -#----------------------------------------------------------------------------- -# Create the gdcmVersion.py file: -FILE(WRITE ${GDCM_BINARY_DIR}/gdcmVersion.py - "gdcmVERSION=\"${GDCM_VERSION_FULL}\"" - ) +SUBDIRS(demo) #----------------------------------------------------------------------------- # SWIG Wrapping @@ -58,23 +53,72 @@ ELSE(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 1.9) ) # Since the file gdcm_wrap.cxx does not exist, mark it as GENERATED: SET_SOURCE_FILES_PROPERTIES(gdcm_wrap.cxx GENERATED) + + ADD_LIBRARY(pygdcm gdcm_wrap.cxx) + TARGET_LINK_LIBRARIES(pygdcm + ${PYTHON_LIBRARY} + gdcm + ) + # http://www.cmake.org/pipermail/cmake/2003-August/004190.html + #SET_TARGET_PROPERTIES(pygdcm PROPERTIES PREFIX "_") + # This swig command will also outputs gdcm.py : SET_SOURCE_FILES_PROPERTIES(gdcm.py GENERATED) - # Then add the custom command to copy it to proper location: + + # Instead of a simple copy operation let create our own gdcm.py file: + # First read what swig dumped: + FILE(READ ${GDCM_BINARY_DIR}/gdcmPython/gdcm.py SWIG_GDCM_PY) + + # Then create the gdcm.py = gdcmVersion.py + gdcm.py (swig) file: + FILE(WRITE ${GDCM_BINARY_DIR}/bin/gdcm.py + "import os\n" + "gdcmVERSION=\"${GDCM_VERSION_FULL}\"\n" + "GDCM_DATA_PATH=\"${GDCM_DATA_ROOT}\"\n\n" + ${SWIG_GDCM_PY} + ) + + # Seems like they want instead a file called gdcmPython.py + # Thus add the custom command to copy it to proper location: ADD_CUSTOM_COMMAND( TARGET pygdcm POST_BUILD COMMAND ${CMAKE_COMMAND} - ARGS -E copy ${GDCM_BINARY_DIR}/gdcmPython/gdcm.py ${GDCM_BINARY_DIR}/bin + ARGS -E copy + ${GDCM_BINARY_DIR}/bin/gdcm.py + ${GDCM_BINARY_DIR}/bin/gdcmPython.py ) - ADD_LIBRARY(pygdcm gdcm_wrap.cxx) - TARGET_LINK_LIBRARIES(pygdcm - ${PYTHON_LIBRARY} - gdcm + # Here comes the hack to rename the library to a more 'swig' compliant scheme" + ADD_CUSTOM_COMMAND( + TARGET pygdcm + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy + ${GDCM_BINARY_DIR}/bin/libpygdcm.so + ${GDCM_BINARY_DIR}/bin/_gdcm.so ) - # http://www.cmake.org/pipermail/cmake/2003-August/004190.html - #SET_TARGET_PROPERTIES(pygdcm PROPERTIES PREFIX "_") + + # where are library stored ? +# SET(GDCM_LIB_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}) +# ADD_CUSTOM_COMMAND( +# TARGET pygdcm +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} +# ARGS -E copy +# ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/${MY_LIB_NAME}${CMAKE_SHLIB_SUFFIX} +# ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/vtkXY.pvm +# TARGET vtkXY +# ) + + # Remove temporary libpygdcm.so library: +# ADD_CUSTOM_COMMAND( +# TARGET pygdcm +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} +# ARGS -E remove ${GDCM_BINARY_DIR}/bin/libpygdcm.so +# ) +# GET_TARGET_PROPERTY(foo pygdcm LOCATION) +# MESSAGE(FATAL_ERROR ${foo}) ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 1.9) diff --git a/gdcmPython/demo/CMakeLists.txt b/gdcmPython/demo/CMakeLists.txt new file mode 100644 index 00000000..d6cc435a --- /dev/null +++ b/gdcmPython/demo/CMakeLists.txt @@ -0,0 +1,23 @@ +# Python testing directory, 'demo' is not very explicit ... + +# DOH! python is not found by default +FIND_PROGRAM(PYTHON_EXECUTABLE + NAMES python2.3 python2.2 python2.1 python2.0 python1.6 python1.5 python + PATHS + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath] + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.2\\InstallPath] + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.1\\InstallPath] + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.0\\InstallPath] + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.6\\InstallPath] + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.5\\InstallPath] +) +MARK_AS_ADVANCED(PYTHON_EXECUTABLE) + +IF(PYTHON_EXECUTABLE) + ADD_TEST(PrintHeader-Python ${PYTHON_EXECUTABLE} + ${GDCM_SOURCE_DIR}/gdcmPython/demo/PrintHeader.py + ) +ELSE(PYTHON_EXECUTABLE) + MESSAGE(FATAL_ERROR "You requested testing for python, but python was not + found") +ENDIF(PYTHON_EXECUTABLE) -- 2.48.1