Commit 0fe41901 authored by saubatn's avatar saubatn

FEATURE 109 Python Scripting

		Create a parallel tree of the SDK which is CMake-configured only if CAMITK_BINDING_PYTHON variable is manually set to true (default is OFF)
		Each directory on that tree contains :
			* a typesystem.xml file that contains the local folder C++ classes to expose to Python.
			* a global.h C++ header file required to correclty include the C++ classes to expose.
			Both these files are recursively including their subdirectories correspondanding files. 
			This allows Shiboken to be only run on the top python_sdk directory, but keep specifying the classes to expose to Python in the corresponding local typesystem.xml / global.h files in the tree (better to understand / maintain).
		On top of the python_sdk directory is created the custom sdk_wrap_to_python CMake target, which allows to run shiboken on the top python_sdk folder's typesystem.xml / global.h and thus make the SDK binding.
		Coming soon : another target would be created in order to compile the wrapped shiboken-generated C++ classes and link them with the originale CamiTK SDK C++ library in order to produce the CPython extension, i.e. the Python package of CamiTK sdk.
		Coming soon : debugging (of course ;-) )


git-svn-id: svn+ssh://scm.forge.imag.fr/var/lib/gforge/chroot/scmrepos/svn/camitk/trunk/camitk@1170 ec899d31-69d1-42ba-9299-647d76f65fb3
parent cd0d1821
......@@ -40,4 +40,14 @@ add_subdirectory(sdk)
add_subdirectory(imaging)
add_subdirectory(modeling)
# Do we wrapp CamiTK for scripting it into Python using Shiboken and PySide ?
set(CAMITK_BINDING_PYTHON CACHE BOOL FALSE)
# Consider python binding only if the CMake variable is checked
if(CAMITK_BINDING_PYTHON)
add_subdirectory(python_sdk)
endif()
camitk_sub_project_validate(CEP_SET)
#--------------------------------------------
#
# CamiTK SDK Python binding
#
# Do not edit this file, unless
# you really (really!) know
# what you're doing
#
#--------------------------------------------
#--------------------------------------------
#
# Python binding requirements
#
#--------------------------------------------
# First of all needs : Python
find_package(PythonLibs REQUIRED)
# Then the Shiboken tool, the PySide team C++ to Python wrapper
find_package(Shiboken REQUIRED)
find_program(CAMITK_BINDING_PYTHON_GENERATOR shiboken REQUIRED)
if (NOT CAMITK_BINDING_PYTHON_GENERATOR)
message(FATAL_ERROR "Please add Shiboken binary in your PATH or manually point to it using the CAMITK_BINDING_PYTHON_GENERATOR variable")
endif()
# And of course PySide, the Python binding of Qt (4.8) using Shiboken.
find_package(PySide REQUIRED)
#--------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#--------------------------------------------
# Shiboken PATH to look for typesystem.xml and global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
# include subdirectories
add_subdirectory(actions)
add_subdirectory(applications)
add_subdirectory(components)
add_subdirectory(libraries)
# TODO : Remove once debugged
# message(WARNING "SHIBOKEN_TYPESYSTEM_PATH = ${SHIBOKEN_TYPESYSTEM_PATH}")
# message(WARNING "SHIBOKEN_GLOBAL_H_PATH = ${SHIBOKEN_GLOBAL_H_PATH}")
#--------------------------------------------
#
# Custom CMake Python binging targets
#
#--------------------------------------------
# Shiboken specific paths
set(PYSIDE_INCLUDE_ALL_DIR_SHIBOKEN
${PYSIDE_INCLUDE_DIR}:${PYSIDE_INCLUDE_DIR}/QtCore:${PYSIDE_INCLUDE_DIR}/QtGui
# :${PYSIDE_INCLUDE_DIR}/QtHelp:${PYSIDE_INCLUDE_DIR}/QtNetwork:${PYSIDE_INCLUDE_DIR}/QtOpenGL:${PYSIDE_INCLUDE_DIR}/QtScript:${PYSIDE_INCLUDE_DIR}/QtScriptTools:${PYSIDE_INCLUDE_DIR}/QtSql:${PYSIDE_INCLUDE_DIR}/QtSvg:${PYSIDE_INCLUDE_DIR}/QtTest:${PYSIDE_INCLUDE_DIR}/QtUiTools:${PYSIDE_INCLUDE_DIR}/QtWebKit:${PYSIDE_INCLUDE_DIR}/QtXml:${PYSIDE_INCLUDE_DIR}/QtXmlPatterns:${PYSIDE_INCLUDE_DIR}/QtDeclarative
)
# Wrap the CamiTK SDK. Wraping uses Shiboken (PySide binding tool)
# It means it decorate the specified C++ classes to Python by adding
# information in order to convert it into a CPython extension
# Shiboken parses the typesystem.xml files to detect which C++ classes to expose to Python
# For each of them, it create a CPython C++ decorated class in the build directory
add_custom_target( sdk_wrap_to_python
# OUTPUT ${lib_python_SRC}
COMMAND ${CMAKE_COMMAND} -E echo "Wrapping CamiTK SDK for Python exposure."
COMMAND ${CAMITK_BINDING_PYTHON_GENERATOR} --enable-parent-ctor-heuristic --enable-return-value-heuristic --enable-pyside-extensions # --debug-level=full
${CMAKE_CURRENT_SOURCE_DIR}/global_sdk.h
--include-paths=${PYSIDE_INCLUDE_ALL_DIR_SHIBOKEN}:${QT_INCLUDE_DIR}:${QT_QTCORE_INCLUDE_DIR}:${SHIBOKEN_GLOBAL_H_PATH}
--typesystem-paths=${PYSIDE_TYPESYSTEMS}:${SHIBOKEN_TYPESYSTEM_PATH}
--output-directory=${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/typesystem_sdk.xml
# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
# COMMENT "Running generator for ${PROJECT_NAME}:"
)
# Build the CPython extension with the original C++ library and the decorated
# Python exposed classes
#
# DO NOT EDIT THIS FILE (unless you REALLY know what you are doing)
#
# To add a component, just add a subdirectory (the component name is the
# directory name). Add all your code there and a text file called
# CMakeLists.txt
# In your CMakeLists.txt, use the camitk_extension(ACTION_EXTENSION ...) macro apropriately
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
# find components
get_subdirectories(ACTIONS_LIST)
# Add subdirectories in CMake project
foreach(ACTION_NAME ${ACTIONS_LIST})
add_subdirectory(${ACTION_NAME})
endforeach()
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
// subdirectories header files
#include "./application/global_sdk_actions_application.h"
#include "./image/global_sdk_actions_image.h"
#include "./mesh/global_sdk_actions_mesh.h"
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK actions subdirectories typesystem files -->
<load-typesystem name="typesystem_sdk_actions_application.xml" generate="no" />
<load-typesystem name="typesystem_sdk_actions_image.xml" generate="no" />
<load-typesystem name="typesystem_sdk_actions_mesh.xml" generate="no" />
<!-- Add here C++ Classes to expose to Python -->
</typesystem>
#
# DO NOT EDIT THIS FILE (unless you REALLY know what you are doing)
#
# To add an application, just add a subdirectory (the application name is the
# directory name). Add all your code there and a text file called
# CMakeLists.txt
# In your CMakeLists.txt, use the camitk_application() macro apropriately
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
# Find applications
get_subdirectories(APPLICATIONS_LIST)
# --- add every given application
foreach(APPLICATION_NAME ${APPLICATIONS_LIST})
add_subdirectory(${APPLICATION_NAME})
endforeach()
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
\ No newline at end of file
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
// subdirectories header files
#include "./actionstatemachine/global_sdk_applications_actionstatemachine.h"
#include "./config/global_sdk_applications_config.h"
#include "./imp/global_sdk_applications_imp.h"
#include "./wizard/global_sdk_applications_wizard.h"
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK actions subdirectories typesystem files -->
<load-typesystem name="typesystem_sdk_applications_actionstatemachine.xml" generate="no" />
<load-typesystem name="typesystem_sdk_applications_config.xml" generate="no" />
<load-typesystem name="typesystem_sdk_applications_imp.xml" generate="no" />
<load-typesystem name="typesystem_sdk_applications_wizard.xml" generate="no" />
<!-- Add here C++ Classes to expose to Python -->
</typesystem>
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
#
# DO NOT EDIT THIS FILE (unless you REALLY know what you are doing)
#
# To add a component, just add a subdirectory (the component name is the
# directory name). Add all your code there and a text file called
# CMakeLists.txt
# In your CMakeLists.txt, use the camitk_extension(COMPONENT_EXTENSION ...) macro apropriately
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
# find components
get_subdirectories(COMPONENTS_LIST)
# Add subdirectories in CMake project
foreach(COMPONENT_NAME ${COMPONENTS_LIST})
add_subdirectory(${COMPONENT_NAME})
endforeach()
\ No newline at end of file
// subdirectories header files
#include "./msh/global_sdk_components_msh.h"
#include "./obj/global_sdk_components_obj.h"
#include "./off/global_sdk_components_off.h"
#include "./vrml/global_sdk_components_vrml.h"
#include "./vtkimage/global_sdk_components_vtkimage.h"
#include "./vtkmesh/global_sdk_components_vtkmesh.h"
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK actions subdirectories typesystem files -->
<load-typesystem name="typesystem_sdk_components_msh.xml" generate="no" />
<load-typesystem name="typesystem_sdk_components_obj.xml" generate="no" />
<load-typesystem name="typesystem_sdk_components_off.xml" generate="no" />
<load-typesystem name="typesystem_sdk_components_vrml.xml" generate="no" />
<load-typesystem name="typesystem_sdk_components_vtkimage.xml" generate="no" />
<load-typesystem name="typesystem_sdk_components_vtkmesh.xml" generate="no" />
<!-- Add here C++ Classes to expose to Python -->
</typesystem>
\ No newline at end of file
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
#undef QT_NO_STL
#undef QT_NO_STL_WCHAR
#ifndef NULL
#define NULL 0
#endif
// subdirectories header files
#include "./actions/global_sdk_actions.h"
#include "./applications/global_sdk_applications.h"
#include "./components/global_sdk_components.h"
#include "./libraries/global_sdk_libraries.h"
#
# DO NOT EDIT THIS FILE (unless you REALLY know what you are doing)
#
# To add a library, just add a subdirectory (the application name is the
# directory name). Add all your code there and a text file called
# CMakeLists.txt
# In your CMakeLists.txt, use the camitk_library() macro apropriately
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
# Find libraries
get_subdirectories(LIBRARY_LIST)
# --- add every given library
foreach(LIB_NAME ${LIBRARY_LIST})
add_subdirectory(${LIB_NAME})
endforeach()
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
# Find core subdirectories
get_subdirectories(CORE_SUBDIR_LIST)
# --- add every given library
foreach(LIB_NAME ${CORE_SUBDIR_LIST})
add_subdirectory(${LIB_NAME})
endforeach()
\ No newline at end of file
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
// subdirectories header files
#include "./action/global_sdk_libraries_core_action.h"
#include "./application/global_sdk_libraries_core_application.h"
#include "./component/global_sdk_libraries_core_component.h"
#include "./utils/global_sdk_libraries_core_utils.h"
#include "./viewer/global_sdk_libraries_core_viewer.h"
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK actions subdirectories typesystem files -->
<load-typesystem name="typesystem_sdk_libraries_core_action.xml" generate="no" />
<load-typesystem name="typesystem_sdk_libraries_core_application.xml" generate="no" />
<load-typesystem name="typesystem_sdk_libraries_core_component.xml" generate="no" />
<load-typesystem name="typesystem_sdk_libraries_core_utils.xml" generate="no" />
<load-typesystem name="typesystem_sdk_libraries_core_viewer.xml" generate="no" />
<!-- Add here C++ Classes to expose to Python -->
</typesystem>
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted
set(SHIBOKEN_TYPESYSTEM_PATH ${SHIBOKEN_TYPESYSTEM_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
set(SHIBOKEN_GLOBAL_H_PATH ${SHIBOKEN_GLOBAL_H_PATH}:${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
<?xml version="1.0"?>
<typesystem>
<!-- CamiTK sdk classes exposition to Python -->
</typesystem>
#---------------------------------------------------------------------------------
#
# Recursively parse subdirectories for classes to expose
#
#---------------------------------------------------------------------------------
# Shiboken PATH to look for typesystem.xml adn global.h files, recursively udapted