vtkLocal in 15 Easy Steps (was RE: [vtkusers] VTK 4.0 Local?)

Volpe, Christopher R (CRD) volpecr at crd.ge.com
Wed Dec 19 10:11:36 EST 2001


Oops, one more thing. In Step 11, you should reference one of *your* local classes in that code
segment. Sorry for not making this generic when cutting and pasting my notes.

> -----Original Message-----
> From: Volpe, Christopher R (CRD) 
> Sent: Wednesday, December 19, 2001 9:49 AM
> To: 'Mumit Khan'; William A. Hoffman
> Cc: VTK Users
> Subject: vtkLocal in 15 Easy Steps (was RE: [vtkusers] VTK 4.0 Local?)
> 
> 
> Well, it's been suggested before, but the kitware folks say 
> it leads to problems where, if the
> directory's recognized by CVS, people will inadvertently 
> check in their own local files.
> 
> 
> For what it's worth, here are my changes for ensuring that 
> the LOCAL directory works not only from a
> "package require vtk" in wish, but also in the vtk.exe 
> executable. Where I say to add things to a
> file, it should be fairly obvious upon looking at the file 
> where the things are to be added. (Note:
> This assumes your local depends on hybrid. If something else 
> would be more appropriate for you,
> adjust accordingly.)
> 
> 1) Create LocalUserOptions.cmake in top-level VTK source 
> folder that contains this:
> ---
> OPTION (VTK_USE_LOCAL "Build the local directory classes")
> 
> IF (VTK_USE_LOCAL)
>   INCLUDE_DIRECTORIES(${VTK_SOURCE_DIR}/Local)
>   LINK_DIRECTORIES(${VTK_BINARY_DIR}/Local)
>   SUBDIRS(Local)
>   SUBDIR_DEPENDS(Local Hybrid)
>   IF (VTK_WRAP_TCL)
>     SUBDIR_DEPENDS(Wrapping/Tcl Local)
>   ENDIF (VTK_WRAP_TCL)
> ENDIF (VTK_USE_LOCAL)
> ---
> 
> 2) Add the following to vtkCMakeOptions.cmake:
> 
> ---
> IF (VTK_USE_LOCAL)
>   # local required hybrid
>   IF (VTK_USE_HYBRID)
>     INCLUDE_DIRECTORIES(${VTK_SOURCE_DIR}/Local)
>     IF (NOT VTK_LIBRARY_PATH)
>       LINK_DIRECTORIES(${VTK_BINARY_DIR}/Local)
>     ENDIF (NOT VTK_LIBRARY_PATH)
>   ELSE (VTK_USE_HYBRID)
>     MESSAGE("The Local option requires Hybrid, but you do not 
> have Hybrid selected." "Warning")
>   ENDIF (VTK_USE_HYBRID)
> ENDIF (VTK_USE_LOCAL)  
> ---
> 
> 3) Add the following to vtkToolkits.h.in:
> ---
> #cmakedefine VTK_USE_LOCAL
> ---
> 
> 4) Add the following to Wrapping/vtktcl.c:
> ---
> #ifdef VTK_USE_LOCAL
> extern Vtklocaltcl_Init(Tcl_Interp *interp);
> #endif
> ---
> and
> ---
> #ifdef VTK_USE_LOCAL
>   if (Vtklocaltcl_Init(interp) == TCL_ERROR) 
>     {
>     return TCL_ERROR;
>     }
> #endif
> ---
> 
> 5) Create a file LocalUserOptions.cmake in Wrapping/Tcl that 
> contains the following:
> ---
> IF (VTK_USE_LOCAL)
>   LINK_LIBRARIES(vtkLocalTCL vtkLocal)
> ENDIF (VTK_USE_LOCAL)
> 
> IF (VTK_USE_LOCAL)
>   SUBDIRS(vtklocal)
> ENDIF (VTK_USE_LOCAL)
> ---
> 
> 6) Add the following to Wrapping/Tcl/tkAppInit.cxx.in:
> ---
> #ifdef VTK_USE_LOCAL
> extern "C" int Vtklocaltcl_Init(Tcl_Interp *interp);
> #endif
> ---
> and
> ---
> #ifdef VTK_USE_LOCAL
>   if (Vtklocaltcl_Init(interp) == TCL_ERROR) 
>     {
>     return TCL_ERROR;
>     }
> #endif
> ---
> 
> 7) Add the following to Wrapping/Tcl/vtktcl.c:
> ---
> #ifdef VTK_USE_LOCAL
> extern int vtklocaltcl_Init(Tcl_Interp *interp);
> #endif
> ---
> and
> ---
> #ifdef VTK_USE_LOCAL
>   if (vtklocaltcl_Init(interp) == TCL_ERROR)
>     {
>     return TCL_ERROR;
>     }
> #endif
> ---
> 
> 8) Add the following to Wrapping/Tcl/vtk/vtk.tcl
> ---
> catch {
>     package require vtklocal
> }
> ---
> 
> 9) Create a new folder "vtklocal" under Wrapping/Tcl
> 
> 10) Create a file CMakeLists.txt in Wrapping/Tcl/vtklocal 
> that contains the following:
> ---
> INSTALL_FILES(/lib/vtk/tcl/vtklocal "\\.tcl$")
> ---
> 
> 11) Create a file vtklocal.tcl in Wrapping/Tcl/vtklocal that 
> contains the following:
> ---
> package require hybrid
> 
> if {[info commands vtkSoundData] != "" ||
>     [::vtk::load_component vtkLocalTCL] == ""} {
>     package provide vtklocal 4.0
> }
> ---
> 
> 12) Add the following to Wrapping/Tcl/MakePackages.tcl
> ---
> pkg_mkIndex -direct -verbose vtklocal
> ---
> 
> 13) Run the MakePackages.tcl script in Wrapping/Tcl so that it
> creates the pkgIndex.tcl file in Wrapping/Tcl/vtklocal
> 
> 14) Run CMake, configure, turn on the USE_VTK_LOCAL option, 
> configure, ok
> 
> 15) Load vtk.dsw in DevStudio and rebuild.
> 
> 
> Hope this helps.
> 
> Chris
> > GE Corporate Research & Development 
> > 
> Christopher R. Volpe
> Computer Scientist
> Visualization and Computer Vision Lab / Global Imaging Technology
> Bldg KW, Room C215
> P.O. Box 8, Schenectady, NY 12301
> 
> (518) 387-7766, Dial Comm: 8*833-7766, Fax: (518) 387-6981
> e-mail: volpecr at crd.ge.com    web: http://www.crd.ge.com/~volpecr
> 
> 
> 
> 
> 
> 
> 
> > -----Original Message-----
> > From: Mumit Khan [mailto:khan at nanotech.wisc.edu]
> > Sent: Tuesday, December 18, 2001 4:58 PM
> > To: William A. Hoffman
> > Cc: VTK Users
> > Subject: Re: [vtkusers] VTK 4.0 Local?
> > 
> > 
> > On Tue, 20 Nov 2001, William A. Hoffman wrote:
> > 
> > > You can create one yourself with cmake.
> > >
> > > Just create a  LocalUserOptions.cmake at the top with a
> > > SUBDIRS(Local) in it.
> > >
> > > You will need another LocalUserOptions.cmake in the Wrapping/Tcl/
> > > directory as well.
> > > That should have a LINK_LIBRARIES(vtkLocal) in it.
> > >
> > > We don't want any user editable files in the source tree.
> > > This was a problem with vtk in the past.   It was too easy 
> > to cvs commit
> > > those files by mistake.
> > 
> > May I suggest a contrib package (.tar.gz, .zip, what not) 
> that has the
> > skeleton files needed for Local? The following files should 
> cover the
> > basic need:
> > 
> >   VTK/LocalUserOptions.cmake
> >   VTK/Local/CMakeLists.txt
> >   VTK/Local/vtkDummyObject.cxx
> >   VTK/Local/vtkDummyObject.h
> >   VTK/Wrapping/Tcl/LocalUserOptions.cmake
> >   VTK/Wrapping/Tcl/vtklocal/CMakeLists.txt
> >   VTK/Wrapping/Tcl/vtklocal/pkgIndex.tcl
> >   VTK/Wrapping/Tcl/vtklocal/vtklocal.tcl
> > 
> > Where vtkDummyObject.{h,cxx} is just what the name implies. 
> If there's
> > interest, I'll package it up.
> > 
> > Regards,
> > Mumit
> > 
> > 
> > _______________________________________________
> > This is the private VTK discussion list. 
> > Please keep messages on-topic. Check the FAQ at: 
> > <http://public.kitware.com/cgi-bin/vtkfaq>
> > Follow this link to subscribe/unsubscribe:
> > http://public.kitware.com/mailman/listinfo/vtkusers
> > 
> _______________________________________________
> This is the private VTK discussion list. 
> Please keep messages on-topic. Check the FAQ at: 
> <http://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
> 



More information about the vtkusers mailing list