Hi Robert, I changed my CMakeLists.txt file to
+++++++++++++++++++++++++++++++++++ PROJECT(VisItReaderGFDL) cmake_minimum_required(VERSION 2.8) FIND_PACKAGE(ParaView REQUIRED) INCLUDE(${PARAVIEW_USE_FILE}) SET(SOURCES avtCM24FileFormat.h avtCM24FileFormat.C NETCDFFileObject.h NETCDFFileObject.C ) SET(VISIT_PLUGIN_EXTERNAL_LIBS "" CACHE FILEPATH "External link targets") SET(VISIT_PLUGIN_EXTERNAL_INCLUDE_DIRS "" CACHE PATH "External include directories") INCLUDE_DIRECTORIES(${EXTERNAL_INCLUDE_DIRS}) ADD_VISIT_PLUGIN_READER(VisItReaderGFDL "1.0" VISIT_READER_NAME "avtCM24FileFormat" VISIT_READER_TYPE "MTSD" VISIT_READER_FILE_PATTERN "nc" SERVER_SOURCES ${SOURCES} ) TARGET_LINK_LIBRARIES(VisItReaderGFDL vtkVisItAVTAlgorithms ${EXTERNAL_LIBS}) ++++++++++++++++++++++++++++++++++++++++ and after I run ccmake to put in the external libraries and include directories, in my CMakeCache.txt file, I have +++++++++++++++++ //External include directories VISIT_PLUGIN_EXTERNAL_INCLUDE_DIRS:PATH=/local/home/build/visit/visit-2.2.2-x86_64-openmpi/visit/netcdf/4.1.1/x86_64_gcc-4.1/include;/local/home/build/visit/visit-2.2.2-x86_64-openmpi/visit/hdf5/1.8.4/x86_64_gcc-4.1/include //External link targets VISIT_PLUGIN_EXTERNAL_LIBS:FILEPATH=/local/home/build/visit/visit-2.2.2-x86_64-openmpi/visit/hdf5/1.8.4/x86_64_gcc-4.1/lib/libhdf5.a;/local/home/build/visit/visit-2.2.2-x86_64-openmpi/visit/hdf5/1.8.4/x86_64_gcc-4.1/lib/libhdf5_hl.a;/local/home/build/visit/visit-2.2.2-x86_64-openmpi/visit/netcdf/4.1.1/x86_64_gcc-4.1/lib/libnetcdf.a +++++++++++++++++ but when I run the plugin, I still get sms:/local/home/build/paraview-plugin/gfdl-paraview-loader-build> paraview /local/home/tools/ParaView/ParaView-3.10.1/sms.Linux-2.6.18-194.26.1.el5.x86_64.gcc-4.1.2.release/lib/paraview-3.10/paraview: symbol lookup error: /local/home/build/paraview-plugin/gfdl-paraview-loader-build/libVisItReaderGFDL.so: undefined symbol: nc_inq_attlen when I do a make VERBOSE=1 >& make-out the string netcdf doesn't even show up in the make-out file. am I missing something? I only have static library for netcdf, is that the problem? thank you -simon On Mon, Apr 25, 2011 at 11:12 AM, Simon Su <newsgroup4...@gmail.com> wrote: > Hi Robert, > > I will give it a try. > > thanks > -simon > > > On Mon, Apr 18, 2011 at 9:26 AM, Robert Maynard < > robert.mayn...@kitware.com> wrote: > >> Hi Simon, >> >> I have attached an example CMakeLists.txt that support external library >> linking and include directories. Since you are linking to a static build of >> HDF5 you will need to manually add each library >> to VISIT_PLUGIN_EXTERNAL_LIBS separated by semicolons. >> >> >> On Mon, Apr 11, 2011 at 5:19 PM, Simon Su <newsgroup4...@gmail.com>wrote: >> >>> Hi Robert, >>> >>> It worked. adding the other file listed under my Files components="M" xml >>> block solve the error when the plugin manager tries to loader the plugin. >>> >>> So I went and try to load my file in ParaView ... but this is what I >>> got.... >>> >>> >>> sms:/local/home/build/paraview-plugin/gfdl-paraview-loader-build> >>> paraview >>> /local/home/tools/ParaView/ParaView-3.10.0/sms.Linux-2.6.18-194.26.1.el5.x86_64.gcc-4.1.2.release/lib/paraview-3.10/paraview: >>> symbol lookup error: >>> /local/home/build/paraview-plugin/gfdl-paraview-loader-build/libVisItReaderGFDL.so: >>> undefined symbol: nc_inq_attlen >>> >>> >>> The question now is, where in ccmake can I specify for the plugin when it >>> is compiling to also include libnetcdf.a libhdf5_hl.a libhdf5.a libsz.a >>> libraries? Which variable do I add the libraries to? my ccmake only show >>> three variables when the toggle advanced mode is Off (CMAKE_BUILD_TYPE, >>> CMAKE_INSTALL_PREFIX, and ParaView_DIR). When I turn on the advanced mode, >>> it gave me many many more... but going through the list, I am also not sure >>> which cmake variable to use. >>> >>> vtkVisItReaderGFDL.cxx is attached and it with generated after I added >>> the second file into my CMakeLists.txt. I hope the file is not too big for >>> the list. if it is, it is also included at the bottom of this email. >>> >>> thank you for your help >>> >>> best, >>> -simon >>> >>> >>> >>> /*========================================================================= >>> >>> Program: ParaView >>> Module: vtkVisItReaderGFDL.cxx >>> >>> Copyright (c) 2005,2006 Sandia Corporation, Kitware Inc. >>> All rights reserved. >>> >>> ParaView is a free software; you can redistribute it and/or modify it >>> under the terms of the ParaView license version 1.2. >>> >>> See License_v1.2.txt for the full ParaView license. >>> A copy of this license can be obtained by contacting >>> Kitware Inc. >>> 28 Corporate Drive >>> Clifton Park, NY 12065 >>> USA >>> >>> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS >>> ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT >>> LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR >>> A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR >>> CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >>> EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >>> PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >>> PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF >>> LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING >>> NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS >>> SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >>> >>> >>> ========================================================================*/ >>> #include "vtkVisItReaderGFDL.h" >>> #include "vtkInformation.h" >>> #include "vtkInformationVector.h" >>> #include "vtkObjectFactory.h" >>> #include "vtkMultiBlockDataSet.h" >>> >>> #include "avtCM24FileFormat.h" >>> #include "avtDatabaseMetaData.h" >>> #include "avtMeshMetaData.h" >>> #include "avtVariableCache.h" >>> >>> /* #undef ARG_VISIT_READER_USES_OPTIONS */ >>> >>> #ifdef ARG_VISIT_READER_USES_OPTIONS >>> #include ".h" >>> #endif >>> >>> /* #undef VISIT_READER_USES_INTERFACE */ >>> #ifdef VISIT_READER_USES_INTERFACE >>> #include "vtkVisItReaderGFDL.h" >>> #endif >>> >>> vtkStandardNewMacro(vtkVisItReaderGFDL); >>> >>> >>> //----------------------------------------------------------------------------- >>> vtkVisItReaderGFDL::vtkVisItReaderGFDL() >>> { >>> this->FileName = 0; >>> } >>> >>> >>> //----------------------------------------------------------------------------- >>> vtkVisItReaderGFDL::~vtkVisItReaderGFDL() >>> { >>> this->SetFileName(0); >>> } >>> >>> #ifdef VISIT_READER_USES_INTERFACE >>> >>> //----------------------------------------------------------------------------- >>> int vtkVisItReaderGFDL::CanReadFile(const char *fname) >>> { >>> int valid = 0; >>> try >>> { >>> valid = vtkVisItReaderGFDL::; >>> } >>> catch(...){} >>> return valid; >>> } >>> #endif >>> >>> >>> //----------------------------------------------------------------------------- >>> bool vtkVisItReaderGFDL::InitializeAVTReader( const int& timestep ) >>> { >>> if (!this->MetaData) >>> { >>> this->MetaData = new avtDatabaseMetaData( ); >>> } >>> >>> if (!this->Cache) >>> { >>> this->Cache = new avtVariableCache( ); >>> } >>> >>> if (!this->AvtFile) >>> { >>> try >>> { >>> #ifdef ARG_VISIT_READER_USES_OPTIONS >>> *options = >>> new (); >>> this->AvtFile = new avtCM24FileFormat( >>> this->FileName, options->GetReadOptions() ); >>> delete options; >>> #else >>> this->AvtFile = new avtCM24FileFormat(this->FileName); >>> #endif >>> } >>> catch(...) >>> { >>> this->AvtFile = NULL; >>> return false; >>> } >>> avtCM24FileFormat *file = dynamic_cast<avtCM24FileFormat*> >>> (this->AvtFile); >>> if ( file ) >>> { >>> //we have to make sure the visit reader populates its cache >>> //before activating a time step >>> try >>> { >>> file->SetCache( this->Cache ); >>> file->ActivateTimestep(timestep); >>> >>> //only fill database after choosing timestep to activate >>> file->SetDatabaseMetaData( this->MetaData, timestep ); >>> } >>> catch(...) >>> { >>> return false; >>> } >>> } >>> else >>> { >>> return false; >>> } >>> } >>> >>> return true; >>> } >>> >>> >>> >>> >>> //----------------------------------------------------------------------------- >>> void vtkVisItReaderGFDL::PrintSelf(ostream& os, vtkIndent indent) >>> { >>> this->Superclass::PrintSelf(os, indent); >>> >>> } >>> >>> >>> >>> >>> >>> >>> On Mon, Apr 11, 2011 at 4:41 PM, Robert Maynard < >>> robert.mayn...@kitware.com> wrote: >>> >>>> Hi Simon, >>>> >>>> You do not need to modify the avt file or add the revision macro as that >>>> is not the problem you are currently facing. I would try reverting your avt >>>> file to its original content, adding all the files listed in the Files >>>> components="M" xml block to your SOURCES list, and adding the plugin >>>> build folder to your LD_LIBRARY_PATH. >>>> >>>> Also would you be able to send me the contents of the >>>> vtkVisItReaderGFDL.cxx >>>> from your build directory and I will confirm the automatic wrapping is >>>> working properly. >>>> >>>> >>>> On Mon, Apr 11, 2011 at 3:02 PM, Simon Su <newsgroup4...@gmail.com>wrote: >>>> >>>>> Hi Robert, >>>>> >>>>> I inferred a CMakeLists.txt from the wiki page >>>>> >>>>> >>>>> ================ CMakeLists.txt for the plugin >>>>> >>>>> PROJECT(VisItReaderGFDL) >>>>> >>>>> cmake_minimum_required(VERSION 2.8) >>>>> >>>>> FIND_PACKAGE(ParaView REQUIRED) >>>>> INCLUDE(${PARAVIEW_USE_FILE}) >>>>> >>>>> SET(SOURCES >>>>> avtCM24FileFormat.C >>>>> ) >>>>> >>>>> ADD_VISIT_PLUGIN_READER(VisItReaderGFDL "1.0" >>>>> VISIT_READER_NAME "avtCM24FileFormat" >>>>> VISIT_READER_TYPE "MTSD" >>>>> VISIT_READER_FILE_PATTERN "nc" >>>>> SERVER_SOURCES ${SOURCES} >>>>> ) >>>>> >>>>> TARGET_LINK_LIBRARIES(VisItReaderGFDL vtkVisItAVTAlgorithms) >>>>> ============================ >>>>> >>>>> I then placed the .C and .h files in the same directory >>>>> sms:/local/home/build/paraview-plugin> ls -alF gfdl-paraview-loader >>>>> total 112 >>>>> drwxr-xr-x 2 sms t 4096 Apr 11 14:53 ./ >>>>> drwxr-xr-x 5 sms t 4096 Apr 11 14:20 ../ >>>>> -rw-r--r-- 1 sms t 87958 Apr 11 12:51 avtCM24FileFormat.C >>>>> -rw-r--r-- 1 sms t 7311 Apr 11 14:25 avtCM24FileFormat.h >>>>> -rw-r--r-- 1 sms t 404 Apr 11 13:02 CMakeLists.txt >>>>> >>>>> >>>>> Then in the build directory, I did a ccmake and entered the right text >>>>> for ParaView_DIR variable and I got this after configure/generate/make >>>>> >>>>> sms:/local/home/build/paraview-plugin/gfdl-paraview-loader-build> ls >>>>> -alF >>>>> total 228 >>>>> drwxr-xr-x 3 sms t 4096 Apr 11 14:25 ./ >>>>> drwxr-xr-x 5 sms t 4096 Apr 11 14:20 ../ >>>>> -rw-r--r-- 1 sms t 42197 Apr 11 14:24 CMakeCache.txt >>>>> drwxr-xr-x 6 sms t 4096 Apr 11 14:25 CMakeFiles/ >>>>> -rw-r--r-- 1 sms t 1691 Apr 11 14:24 cmake_install.cmake >>>>> -rwxr-xr-x 1 sms t 74174 Apr 11 14:25 libVisItReaderGFDL.so* >>>>> -rw-r--r-- 1 sms t 12258 Apr 11 14:24 Makefile >>>>> -rw-r--r-- 1 sms t 2685 Apr 11 14:24 moc_VisItReaderGFDL_Plugin.cxx >>>>> -rw-r--r-- 1 sms t 3376 Apr 11 14:24 qrc_VisItReaderGFDL.cxx >>>>> -rw-r--r-- 1 sms t 578 Apr 11 14:24 VisItReaderGFDLInit.cxx >>>>> -rw-r--r-- 1 sms t 4308 Apr 11 14:24 VisItReaderGFDL_Plugin.cxx >>>>> -rw-r--r-- 1 sms t 3809 Apr 11 14:24 VisItReaderGFDL_Plugin.h >>>>> -rw-r--r-- 1 sms t 163 Apr 11 14:24 VisItReaderGFDL.qrc >>>>> -rw-r--r-- 1 sms t 1045 Apr 11 14:24 >>>>> vtkSMVisItReaderGFDLInstantiator.cxx >>>>> -rw-r--r-- 1 sms t 464 Apr 11 14:24 >>>>> vtkSMVisItReaderGFDLInstantiator.h >>>>> -rw-r--r-- 1 sms t 5473 Apr 11 14:24 vtkSMXML_VisItReaderGFDL.h >>>>> -rw-r--r-- 1 sms t 4705 Apr 11 14:24 >>>>> vtkVisItReaderGFDLClientServer.cxx >>>>> -rw-r--r-- 1 sms t 4025 Apr 11 14:24 vtkVisItReaderGFDL.cxx >>>>> -rw-r--r-- 1 sms t 1740 Apr 11 14:24 vtkVisItReaderGFDLExport.h >>>>> -rw-r--r-- 1 sms t 151 Apr 11 14:24 vtkVisItReaderGFDLGUI.xml >>>>> -rw-r--r-- 1 sms t 2194 Apr 11 14:24 vtkVisItReaderGFDL.h >>>>> -rw-r--r-- 1 sms t 4169 Apr 11 14:24 vtkVisItReaderGFDLSM.xml >>>>> >>>>> >>>>> however, loading the plugin using plugin manager gui resulted in an >>>>> error >>>>> >>>>> Cannot load library >>>>> /local/home/build/paraview-plugin/gfdl-paraview-loader-build/libVisItReaderGFDL.so: >>>>> (/local/home/build/paraview-plugin/gfdl-paraview-loader-build/libVisItReaderGFDL.so: >>>>> undefined symbol: _ZTI17avtCM24FileFormat) >>>>> >>>>> then from your plugin wiki page, I added the following line into my >>>>> avtCM24FileFormat.h file >>>>> >>>>> vtkCxxRevisionMacro(VisItReaderGFDL, "$Revision$"); >>>>> >>>>> but when I compile, I get >>>>> >>>>> sms:/local/home/build/paraview-plugin/gfdl-paraview-loader-build> make >>>>> [ 9%] Generating moc_VisItReaderGFDL_Plugin.cxx >>>>> [ 18%] Generating vtkVisItReaderGFDLClientServer.cxx >>>>> [ 27%] Generating qrc_VisItReaderGFDL.cxx >>>>> [ 36%] Generating vtkSMXML_VisItReaderGFDL.h >>>>> -- Generate module: vtkVisItReaderGFDLSM >>>>> [ 45%] Building CXX object >>>>> CMakeFiles/VisItReaderGFDL.dir/qrc_VisItReaderGFDL.cxx.o >>>>> [ 54%] Building CXX object >>>>> CMakeFiles/VisItReaderGFDL.dir/vtkVisItReaderGFDL.cxx.o >>>>> /local/home/build/paraview-plugin/gfdl-paraview-loader/avtCM24FileFormat.h:45: >>>>> error: 'VisItReaderGFDL' has not been declared >>>>> /local/home/build/paraview-plugin/gfdl-paraview-loader/avtCM24FileFormat.h: >>>>> In function 'void CollectRevisions(std::ostream&)': >>>>> /local/home/build/paraview-plugin/gfdl-paraview-loader/avtCM24FileFormat.h:45: >>>>> error: invalid use of 'this' in non-member function >>>>> /local/home/build/paraview-plugin/gfdl-paraview-loader/avtCM24FileFormat.h:45: >>>>> error: 'Superclass' has not been declared >>>>> make[2]: *** [CMakeFiles/VisItReaderGFDL.dir/vtkVisItReaderGFDL.cxx.o] >>>>> Error 1 >>>>> make[1]: *** [CMakeFiles/VisItReaderGFDL.dir/all] Error 2 >>>>> make: *** [all] Error 2 >>>>> >>>>> and actually, my plugin code also depend on both netcdf and hdf5 >>>>> library which is specified in my VisIt xml file >>>>> >>>>> sms:/local/home/build/paraview-plugin/gfdl-visit-load> cat CM24.xml >>>>> <?xml version="1.0"?> >>>>> <Plugin name="CM24" type="database" label="NetCDF CM2.4" >>>>> version="1.0" enabled="true" mdspecificcode="false" >>>>> engspecificcode="false" >>>>> onlyengine="false" noengine="false" dbtype="MTSD" haswriter="false" >>>>> hasoptions="false"> >>>>> <CXXFLAGS> >>>>> >>>>> -I/net/sms/tools/VisIt/VisIt-2.2.1/sms.Linux-2.6.18-194.26.1.el5.x86_64.gcc-4.1.2.release/current/linux-x86_64/include/netcdf >>>>> -Wno-deprecated >>>>> </CXXFLAGS> >>>>> <LIBS> >>>>> >>>>> /local/home/tools/VisIt/VisIt-2.2.1/sms.Linux-2.6.18-194.26.1.el5.x86_64.gcc-4.1.2.release/current/linux-x86_64/archives/libnetcdf.a >>>>> >>>>> /local/home/tools/VisIt/VisIt-2.2.1/sms.Linux-2.6.18-194.26.1.el5.x86_64.gcc-4.1.2.release/current/linux-x86_64/lib/libhdf5_hl.a >>>>> >>>>> /local/home/tools/VisIt/VisIt-2.2.1/sms.Linux-2.6.18-194.26.1.el5.x86_64.gcc-4.1.2.release/current/linux-x86_64/lib/libhdf5.a >>>>> >>>>> /local/home/tools/VisIt/VisIt-2.2.1/sms.Linux-2.6.18-194.26.1.el5.x86_64.gcc-4.1.2.release/current/linux-x86_64/lib/libsz.a >>>>> </LIBS> >>>>> <FilePatterns> >>>>> *.nc >>>>> </FilePatterns> >>>>> <Files components="M"> >>>>> avtCM24FileFormat.C >>>>> NETCDFFileObject.C >>>>> </Files> >>>>> <Files components="E"> >>>>> avtCM24FileFormat.C >>>>> NETCDFFileObject.C >>>>> </Files> >>>>> <Attribute name="" purpose="" persistent="true" keyframe="true" >>>>> exportAPI="" exportInclude=""> >>>>> </Attribute> >>>>> </Plugin> >>>>> >>>>> how do I go about adding the appropriate netcdf and hdf5 libraries into >>>>> the plugin CMakeLists.txt file? >>>>> >>>>> any help is much appreciated. >>>>> >>>>> thank you >>>>> -simon >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On Mon, Apr 11, 2011 at 8:25 AM, Robert Maynard < >>>>> robert.mayn...@kitware.com> wrote: >>>>> >>>>>> Hi Simon, >>>>>> >>>>>> You do not need to place the CMakeLists.txt inside ParaView at all to >>>>>> build a plugin. You just need to set that folder as the source folder >>>>>> for CMake, and set a different directory as the plugin build >>>>>> directory. After that you will need to set ParaView_DIR to your >>>>>> ParaView build directory. >>>>>> >>>>>> I would also look over: http://www.paraview.org/Wiki/Plugin_HowTo for >>>>>> my information on building plugins. >>>>>> >>>>>> On Fri, Apr 8, 2011 at 5:12 PM, Simon Su <newsgroup4...@gmail.com> >>>>>> wrote: >>>>>> > Hi there, >>>>>> > >>>>>> > I have silo plugin working and now I would like to try out adding my >>>>>> own >>>>>> > VisIt database plugin to ParaView. >>>>>> > http://www.cmake.org/Wiki/VisIt_Database_Bridge mentioned how to >>>>>> write the >>>>>> > CMakeLists.txt file but where do I need to place the files ( >>>>>> CMakeLists.txt, >>>>>> > and avtMyReaderFileFormat.C) in the source tree of ParaView to be >>>>>> pickup by >>>>>> > the cmake process? >>>>>> > >>>>>> > thanks >>>>>> > -simon >>>>>> > >>>>>> > _______________________________________________ >>>>>> > Powered by www.kitware.com >>>>>> > >>>>>> > Visit other Kitware open-source projects at >>>>>> > http://www.kitware.com/opensource/opensource.html >>>>>> > >>>>>> > Please keep messages on-topic and check the ParaView Wiki at: >>>>>> > http://paraview.org/Wiki/ParaView >>>>>> > >>>>>> > Follow this link to subscribe/unsubscribe: >>>>>> > http://www.paraview.org/mailman/listinfo/paraview >>>>>> > >>>>>> > >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Robert Maynard >>>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> Robert Maynard >>>> >>> >>> >> >> >> -- >> Robert Maynard >> > >
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview