[CMake] [vtk-developers] python, postgreSQL, VTK build

David Thompson dcthomp at sandia.gov
Fri Aug 29 16:52:07 EDT 2008


> For my install of PGSQL, I had to build pqxx from source and I have
> the following libraries:
Doh! I thought the change from libpq+libpqxx to just libpq made it into
VTK 5.2. I guess not. Anyway, you will need libpqxx version 2.6.9 with
the ALLOW_LONG_LONG option turned because VTK requires 64-bit integer
support.

	David

> 
> [ dweber at elegans ~/src/kitware/VTK_build ]$
> ls /Library/PostgreSQL/8.3/lib/
> libecpg.6.0.dylib*  libecpg.dylib@             libecpg_compat.a
> libpgtypes.3.0.dylib*  libpgtypes.dylib@  libpq.a
> libecpg.6.dylib@    libecpg_compat.3.0.dylib*  libecpg_compat.dylib@
> libpgtypes.3.dylib@    libpq.5.1.dylib*   libpq.dylib@
> libecpg.a           libecpg_compat.3.dylib@    libpgport.a
> libpgtypes.a           libpq.5.dylib@     postgresql/
> [ dweber at elegans ~/src/kitware/VTK_build ]$ 
> [ dweber at elegans ~/src/kitware/VTK_build ]$ ls /usr/local/lib/libpqxx*
> /usr/local/lib/libpqxx-3.0.0.dylib*  /usr/local/lib/libpqxx.a  /usr/local/lib/libpqxx.dylib@  /usr/local/lib/libpqxx.la*
> [ dweber at elegans ~/src/kitware/VTK_build ]$ 
> 
> 
> This is what I see for a VTK-5-2 checkout in VTK/IO/CMakeLists.txt
> (just the PGSQL section):
> 
> #-----------------------------------------------------------------------------
> # PostgreSQL
> # build the PostgreSQL database backend (if the PostgresSQL and pqxx
> libraries are available)
> #
> OPTION( VTK_USE_POSTGRES "Build the PostgreSQL driver for
> vtkSQLDatabase." OFF)
> MARK_AS_ADVANCED(VTK_USE_POSTGRES)
> IF ( VTK_USE_POSTGRES )
>   FIND_PACKAGE( PQXX REQUIRED )
>   IF ( BUILD_TESTING )
>     SET ( VTK_PSQL_TEST_URL "" CACHE STRING "A URL for a PostgreSQL
> server of the form
> psql://[[username[:password]@]hostname[:port]]/[dbname]" ) 
>   ENDIF ( BUILD_TESTING )
> ENDIF ( VTK_USE_POSTGRES )
> #
> # Only include the Postgres backend if the user has explicitly turned
> on
> # VTK_USE_POSTGRES. If so, user must also have set POSTGRES_LIBRARIES
> # and POSTGRES_INCLUDE_DIRECTORIES to valid values.
> IF ( VTK_USE_POSTGRES AND PQXX_FOUND )
>   INCLUDE_DIRECTORIES( ${PQXX_INCLUDE_DIRECTORIES} )
>   SET( Kit_SRCS
>     ${Kit_SRCS}
>     vtkPostgreSQLDatabase.cxx
>     vtkPostgreSQLQuery.cxx
>   )
>   LINK_LIBRARIES( ${PQXX_LIBRARIES} )
> ENDIF ( VTK_USE_POSTGRES AND PQXX_FOUND )
> 
> #-----------------------------------------------------------------------------
> 
> 
> So I changed the LINK_LIBRARIES as suggested and I'm running ccmake in
> the same build (I don't want to scrap it and lose the cache
> completely, it has a lot of settings that I need).  So now ccmake is
> finding:
> 
> PQXX_HEADER_PATH /usr/local/include
> PQXX_LIBRARY /usr/local/lib/libpqxx.dylib                                                                                     
> PQXX_INCLUDE_DIRECTORIES         /usr/local/include
> PQXX_LIBRARIES                   /usr/local/lib/libpqxx.dylib
>   
> POSTGRES_INCLUDE_DIRECTORIES     /opt/local/include/postgresql83                                                                                  
> POSTGRES_LIBRARIES               /opt/local/lib/postgresql83                                                                                      
> 
> In my case, I first installed PGSQL with macports and then removed it
> using macports.  So, ccmake has a stale entry that is not updated when
> I run it again.  I should probably scrap this build directory and
> start again.  Maybe there is a way to ensure ccmake double-checks the
> cache entries?  That might be easier, because a lot of this build is
> already done.  It should be finding the /Library/PostgreSQL/ path,
> which is what I used to build the pqxx library (there was no pqxx in
> macports).
> 
> So, I've tried to manually change the POSTGRES* paths to:
> 
> POSTGRES_INCLUDE_DIRECTORIES /Library/PostgreSQL/8.3/include
> POSTGRES_LIBRARIES /Library/PostgreSQL/8.3/lib
> 
> However, I got a stack of warnings at the end of the generation (for
> most vtk components):
> 
> WARNING: Target "vtkIO" requests linking to directory
> "/Library/PostgreSQL/8.3/lib".  Targets may link only to libraries.
> CMake is dropping the entry.
> 
> 
> So then I set all the PGSQL and PQXX paths to an empty value and I
> toggled off and on VTK_USE_POSTGRESQL and it came back with:
> 
> PQXX NOT FOUND
> 
> and the PGSQL paths remained empty.  I'm stumbling around in the
> dark :-(
> 
> Thanks!
> 
> 
> 
> 
> 
> 
> 
> On Fri, Aug 29, 2008 at 12:57 PM, David Cole <david.cole at kitware.com>
> wrote:
>         As David Thompson rightfully pointed out, we should not be
>         using LINK_LIBRARIES in VTK's CMakeLists.txt files.
>         
>         
>         Change the LINK_LIBRARIES statement in VTK/IO/CMakeLists.txt
>         to:
>             SET(KIT_LIBS ${KIT_LIBS} ${POSTGRES_LIBRARIES})
>         
>         
>         and make sure that POSTGRES_LIBRARIES has the full path to pq
>         in it, and it should work.
>         
>         
>         Let us know if it works, and we will commit that change to CVS
>         HEAD in VTK.
>         
>         
>         
>         
>         Thanks,
>         David Cole
>         
>         
>         
>         
>         
>         On Fri, Aug 29, 2008 at 3:51 PM, Darren Weber
>         <darren.weber.lists at gmail.com> wrote:
>                 
>                 I had some choices on how to install MySQL and
>                 PostgreSQL on OS X (Leopard Server, in my case).
>                 There is a "default" install of MySQL for Leopard
>                 server, but it had no development libraries that I
>                 could find.  There was no default install of
>                 PostgreSQL.  I first tried macports, but I found some
>                 problems with those installations (can't recall the
>                 details now).  I moved to install binaries from the
>                 main web sites for both MySQL and PostgreSQL.  Those
>                 binary installs mostly take care of a few
>                 configuration issues (although there are some startup
>                 and symlink issues for MySQL; I had to create symlinks
>                 in /usr/bin to point
>                 to /usr/local/mysql/bin; /usr/local/mysql is a symlink
>                 to /usr/local/mysql-<version>).  The PostgreSQL
>                 installs into /Library/PostgreSQL/<version>/*
>                 
>                 I started looking into dyld, but I'm not sure that's
>                 the problem here.
>                 
>                 Is there a way I can run just the cmake utility that
>                 should find these libraries?  I noticed in the ccmake
>                 curses interface that the libraries were found or I
>                 just entered the "right" path values.  I'll double
>                 check that.
>                 
>                 Thanks!
>                 
>                 
>                 
>                 
>                 On Fri, Aug 29, 2008 at 12:24 PM, David Thompson
>                 <dcthomp at sandia.gov> wrote:
>                         On Fri, 2008-08-29 at 11:58 -0600, David Cole
>                         wrote:
>                         > Nevertheless, you should at least be able to
>                         link to it if you specify
>                         > the full path to the library. Where is the
>                         CMake code that does
>                         > TARGET_LINK_LIBRARIES for this lib?
>                         
>                         
>                         The PostgreSQL library is located with this
>                         script:
>                           VTK/CMake/FindPOSTGRES.cmake
>                         and a call to LINK_LIBRARIES is made here:
>                           VTK/IO/CMakeLists.txt
>                         if PostgreSQL is turned on. Interestingly,
>                         LINK_LIBRARIES is used
>                         instead of TARGET_LINK_LIBRARIES. Perhaps that
>                         should be changed to
>                         TARGET_LINK_LIBRARIES (both for PostgreSQL and
>                         MySQL)? Also, perhaps on
>                         MacOS X there are some dependent libraries
>                         required that are not being
>                         located? The FindPOSTGRES.cmake script doesn't
>                         look for any, so if zlib
>                         or any ssl libraries are required that might
>                         cause trouble in the case
>                         where libpq is static.
>                         
>                                David
>                         
>                         
>                         >  Do we use FIND_LIBRARY to get this lib path
>                         when linking to it or
>                         > what?
>                         >
>                         >
>                         > Is there a Postgres SQL VTK developer out
>                         there?
>                         
>                         >
>                         >
>                         >
>                         > 2008/8/29 Darren Weber
>                         <darren.weber.lists at gmail.com>
>                         >
>                         >         For the record, there's some useful
>                         information on OS X
>                         >         library paths in
>                         >         'man dyld'
>                         >
>                         >         I assume the binary install of
>                         postgreSQL is not adding to one
>                         >         of these path settings.
>                         >
>                         >
>                         >
>                         >
>                         >         On Fri, Aug 29, 2008 at 8:47 AM,
>                         Darren Weber
>                         >         <darren.weber.lists at gmail.com>
>                         wrote:
>                         >
>                         >                 I've got a link error when
>                         building VTK on OSX.  I've
>                         >                 enabled postgresql and
>                         python wrapping.
>                         >
>                         >                 [ 73%] Built target vtk
>                         >                 Scanning dependencies of
>                         target vtkpython
>                         >                 [ 73%] Building CXX object
>                         >
>                         Wrapping/Python/CMakeFiles/vtkpython.dir/vtkPythonAppInit.o
>                         >                 Linking CXX
>                         executable ../../bin/vtkpython
>                         >                 ld: file not found:
>                         libpq.5.dylib
>                         >                 collect2: ld returned 1 exit
>                         status
>                         >                 make[2]: *** [bin/vtkpython]
>                         Error 1
>                         >                 make[1]: ***
>                         >
>                         [Wrapping/Python/CMakeFiles/vtkpython.dir/all]
>                         Error 2
>                         >                 make: *** [all] Error 2
>                         >
>                         >
>                         >                 I've used the binary
>                         installer for postgresql, which
>                         >                 goes
>                         into /Library/PostgreSQL/8.3/*
>                         >
>                         >                 [ dweber at elegans
>                         ~/src/kitware/VTK_build ]$
>                         >
>                         ls /Library/PostgreSQL/8.3/lib/
>                         >                 libecpg.6.0.dylib*
>                          libecpg.dylib@
>                         >                 libecpg_compat.a
>                         libpgtypes.3.0.dylib*
>                         >                 libpgtypes.dylib@  libpq.a
>                         >                 libecpg.6.dylib@
>                          libecpg_compat.3.0.dylib*
>                         >                 libecpg_compat.dylib@
>                          libpgtypes.3.dylib@
>                         >                 libpq.5.1.dylib*
>                         libpq.dylib@
>                         >                 libecpg.a
>                         libecpg_compat.3.dylib@
>                         >                 libpgport.a
>                          libpgtypes.a
>                         >                 libpq.5.dylib@
>                         postgresql/
>                         >                 [ dweber at elegans
>                         ~/src/kitware/VTK_build ]$
>                         >
>                         >
>                         >                 Is this a simple problem of
>                         loading up an LD path or
>                         >                 something so the build can
>                         find it?  What's the best
>                         >                 way to do this on OSX?
>                         >
>                         >                 Thanks, Darren
>                         >
>                         >
>                         >
>                         >
>                         >
>                         >
>                         _______________________________________________
>                         >         vtk-developers mailing list
>                         >         vtk-developers at vtk.org
>                         >
>                         http://www.vtk.org/mailman/listinfo/vtk-developers
>                         >
>                         >
>                         >
>                         
>                         
>                         
>                 
>                 
>         
>         
> 
> 




More information about the CMake mailing list