Introduction: ------------- This directory demonstrates how to organize a local source repository where local VTK classes can be compiled and wrapped into C++/Python libraries without interfering with the main VTK source dir. It might be good thing to sort local classes into different 'package' directories like VTK does (Common, Rendering, Filtering, Imaging, IO, etc.). It prevents numerous dependencies problems and provides a better overview of the class hierarchy. - this example enforces this 'package' organization by referring to a vtkBar class into the Common/ directory and a vtkImageFoo class into the Imaging/ directory (the later uses an instance of vtkBar to "work", thus demonstrating how CMake resolves dependencies between both directories). Nevertheless, if you do not care about this ordering, you might just put your classes into the Unsorted/ directory, like the vtkBar2 class for example. By default, members of the Unsorted package will depend on all other packages and will be linked against all VTK packages too. What you should do: ------------------- - Copy this vtkMy directory to a different out-of-source place. - Fill the subdirs with your own classes. Remove the dummy classes if needed. For each CMakeList.txt in the package dirs, add or remove the class(es) pertaining to this directory (SET command). Depending on the directory, your class must #include "vtkmy*Win32Header.h" (see dummy classes for example) and use the corresponding VTK_MY_*_EXPORT macro after the 'class' keyword to ensure proper DLL build. - Run CMake as usual. Use your vtkMy local dir as source dir, and choose whatever build directory. Your VTK build- or install- directory should be found automatically. - Build your project. - Add the path to your build-dir bin/ directory to your PATH environment variable (as well as LD_LIBRARY_PATH for Unix users), so these C++ DLL can be found (if any). Distribute or exchange your modules: ------------------------------------ Ideally, if you plan to exchange or distribute your modules then you should rename the vtkmy lib prefix to something more personal or unique. You might use your initials for example. In a nutshell, if you were to choose vtksb, then you should take care of the following: - Search for the vtkmy string and replace it with vtksb in all files. - In the same way, replace VTKMY by VTKSB. - In all VTK headers, change VTKMY_*_EXPORT to VTKSB_*_EXPORT. Any prefix should work, but make sure that your class names start with 'vtk', otherwise the wrappers will fail (hence the vtksb or vtkmy prefix, not sbvtk or myvtk). A safe bet is to use something starting 'vtk' in a consistent way.