E57 support in linux [was XERCES not found]

All about Linux portage
jgpallero
Posts: 44
Joined: Thu Dec 12, 2013 2:00 pm

E57 support in linux [was XERCES not found]

Post by jgpallero »

Hello:

I've opened this thread in order to explain how could I compile CC with E57 support in linux. My OS is Debian Sid, but I think the steps are also valid for other distributions. Some compilation problems were solved after the discussion in this thread: viewtopic.php?f=12&t=584

First of all, as not all the dependencies for E57 are available in the Debian repos, manual compilation of libe57 was needed. The E57 library can be downloaded from http://www.libe57.org (now, sourceforge is apparently down, so it can't be downloaded). All E57 dependencies (xerces, etc.) are in the Debian repositories, so we need to compile only libe57 itself. The build system is CMAKE, so it can be managed graphically via cmake-gui. After the cmake-gui launch, we need to check the "Advanced" option, in order to see all the configuration options. And here is the tricky part: we need to addd the -fPIC value to the options CMAKE_CXX_FLAGS and CMAKE_C_FLAGS. Apparently, there is not a way to generate libe57 as shared library (at least I've not found it at all), so only the static version will be constructed. But the compilation of the files without the -fPIC option make impossible the posterior use of libe57 in the CloudCompare compilation. Finally, we compile and install the library, for example in /opt/e57

Then, the CloudCompare compilation. The next instructions are valid for the 2.6.1 code. At this point, in the cmake-gui menu, we select the option OPTIO_USE_LIBE57. When we try to configure, we obtain two errors:

Code: Select all

CMake Error at contrib/E57Support.cmake:15 (message):
  No LibE57 install dir specified (LIBE57_INSTALL_DIR)
Call Stack (most recent call first):
  contrib/AllSupport.cmake:8 (include)
  CMakeLists.txt:68 (include)


CMake Error at contrib/E57Support.cmake:36 (message):
  Unable to find Xerces library.  Please make XERCES_ROOT point to the root
  of Xerces directory.
Call Stack (most recent call first):
  contrib/AllSupport.cmake:8 (include)
  CMakeLists.txt:68 (include)
The first one is about the lack of the E57 path. We can fix it in the LIBE57_INSTALL_DIR option of the 'Ungrouped Entries' section. We run again configure and we have only the second error, whixh relies about the Xerces library paths. If we check the "Advanced" option in the cmake-gui interface, we can see two options related to Xerces in the 'ungrouped Entries" section: Xerces_INCLUDE_DIR and XERCES_ROOT. The first one contains by default /usr/include, wich is correct if we use the xerces library from the Debian repositories. But the XERCES_ROOT option does not apparently work. In order to fix the Xerces path, we need to modify the trunk-2.6.1/contrib/cmake/Modules/FindXerces.cmake file. We need to comment three lines and add two new ones:

Code: Select all

# if( NOT $ENV{XERCES_ROOT} STREQUAL "" )
#     set(XERCES_ROOT $ENV{XERCES_ROOT})
    set(Xerces_LIBRARY_DEBUG "/usr/lib/x86_64-linux-gnu/libxerces-c-3.1.so")
    set(Xerces_LIBRARY_RELEASE "/usr/lib/x86_64-linux-gnu/libxerces-c-3.1.so")
# endif()
We need to add explicitly the paths for the xerces library (it is important to be the shared one). The script checks the XERCES_ROOT variable, but although its value is set in the cmake-gui, the variable is always empty and the if sentence is never true in the script.

At this point, we can yet configure the project without errors, generate the makefiles and start compilation. The first error in the compilation proccess is

Code: Select all

[ 25%] Building CXX object libs/qCC_io/CMakeFiles/QCC_IO_LIB.dir/E57Filter.cpp.o
/home/topo/Desktop/trunk-2.6.1/libs/qCC_io/E57Filter.cpp:26:31: fatal error: E57/E57Foundation.h: No existe el fichero o el directorio
 #include <E57/E57Foundation.h>
                               ^
compilation terminated.
The problem is that the file trunk-2.6.1/libs/qCC_io/E57Filter.cpp includes the E57/E57Foundation.h, but the path are wrong. The previous E57 library installation created the e57/ subfolder inside the Include/ directory, but the include expects the E57/ folder is in upper case. But, at least in linux, upper case are not the same as lower case for paths in C/C++. There is two possible ways to fix the bug: change the name of the e57/ subfolder to E57/ or modify the trunk-2.6.1/libs/qCC_io/E57Filter.cpp file in order to include the correct path. I've modified the file and I've invoked make again.

The next error is

Code: Select all

[ 21%] Building CXX object libs/qCC_io/CMakeFiles/QCC_IO_LIB.dir/moc_AsciiOpenDlg.cxx.o
make[2]: *** No rule to make target '/opt/e57/lib/E57RefImpl.lib', needed by 'libs/qCC_io/libQCC_IO_LIB.so'.  Alto.
CMakeFiles/Makefile2:436: recipe for target 'libs/qCC_io/CMakeFiles/QCC_IO_LIB.dir/all' failed
make[1]: *** [libs/qCC_io/CMakeFiles/QCC_IO_LIB.dir/all] Error 2
Makefile:116: recipe for target 'all' failed
make: *** [all] Error 2
Apparently, the E57 files support is coded only for Windows systems, so the compilation script search only for Windows libraries. We need to open the file trunk-2.6.1/contrib/E57Support.cmake and change the line

Code: Select all

target_link_libraries( ${ARGV0} debug ${LIBE57_INSTALL_DIR}/lib/E57RefImpl-d.lib optimized ${LIBE57_INSTALL_DIR}/lib/E57RefImpl.lib )
by

Code: Select all

target_link_libraries( ${ARGV0} debug ${LIBE57_INSTALL_DIR}/lib/libE57RefImpl-d.a optimized ${LIBE57_INSTALL_DIR}/lib/libE57RefImpl.a )
At this point, we need to configure again the project in the cmake-gui interface, generate again the makefiles and execute again make.

Following this instructions, I was able to compile CC with E57 in Debian GNU/Linux

Thanks
daniel
Site Admin
Posts: 7711
Joined: Wed Oct 13, 2010 7:34 am
Location: Grenoble, France
Contact:

Re: E57 support in linux [was XERCES not found]

Post by daniel »

Thanks for the feedback.

I've updated the E57Filter.cpp and the E57Support.cmake files.
Daniel, CloudCompare admin
jgpallero
Posts: 44
Joined: Thu Dec 12, 2013 2:00 pm

Re: E57 support in linux [was XERCES not found]

Post by jgpallero »

daniel wrote:Thanks for the feedback.

I've updated the E57Filter.cpp and the E57Support.cmake files.
Thank you for the changes. I think, anyway, there is a small error in the commit https://github.com/cloudcompare/trunk/c ... f128b70cd5 The line

Code: Select all

target_link_libraries( ${ARGV0} debug ${LIBE57_INSTALL_DIR}/lib/E57RefImpl-d.a optimized ${LIBE57_INSTALL_DIR}/lib/E57RefImpl.a )
should be

Code: Select all

target_link_libraries( ${ARGV0} debug ${LIBE57_INSTALL_DIR}/lib/libE57RefImpl-d.a optimized ${LIBE57_INSTALL_DIR}/lib/libE57RefImpl.a )
The libraries in linux are named as libE57RefImpl-d.a and libE57RefImpl.a, with the preffix 'lib'

Also, could be possible to add the options Xerces_LIBRARY_DEBUG and Xerces_LIBRARY_RELEASE and delete XERCES_ROOT to the general configuration script for cmake-gui?
daniel
Site Admin
Posts: 7711
Joined: Wed Oct 13, 2010 7:34 am
Location: Grenoble, France
Contact:

Re: E57 support in linux [was XERCES not found]

Post by daniel »

Okay I fixed the libXXX.a thing.

And I removed the FindXerces script and replaced it by a manual definition of the include folder and libraries so as to get a consistent workflow on all platforms.
Daniel, CloudCompare admin
jgpallero
Posts: 44
Joined: Thu Dec 12, 2013 2:00 pm

Re: E57 support in linux [was XERCES not found]

Post by jgpallero »

daniel wrote:Okay I fixed the libXXX.a thing.

And I removed the FindXerces script and replaced it by a manual definition of the include folder and libraries so as to get a consistent workflow on all platforms.
I'm trying the code from the git repo and I still obtain an error in the configuration process:

Code: Select all

CMake Error at contrib/E57Support.cmake:71 (message):
  Unable to find Xerces library.  Please set Xerces_LIBRARY_RELEASE to point
  to the (release) library file.
Call Stack (most recent call first):
  contrib/AllSupport.cmake:33 (target_link_LIBE57)
  libs/qCC_io/CMakeLists.txt:49 (target_link_contrib)
I've set the variable Xerces_LIBRARY_RELEASE to point the library in the cmake-gui, so it looks like your changes in the code have some bug

Thanks
daniel
Site Admin
Posts: 7711
Joined: Wed Oct 13, 2010 7:34 am
Location: Grenoble, France
Contact:

Re: E57 support in linux [was XERCES not found]

Post by daniel »

Indeed, I can't test the Linux parts of the scripts ;)

I've updated it.
Daniel, CloudCompare admin
jgpallero
Posts: 44
Joined: Thu Dec 12, 2013 2:00 pm

Re: E57 support in linux [was XERCES not found]

Post by jgpallero »

daniel wrote:Indeed, I can't test the Linux parts of the scripts ;)

I've updated it.
Thank you. Now, the configuration step works, but I still have errors at linking step:

Code: Select all

[ 41%] Built target QCC_GL_LIB
Linking CXX executable CloudCompare
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::FloatNode::value() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::BlobNode::write(unsigned char*, long, unsigned long)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::IntegerNode::IntegerNode(e57::ImageFile, long, long, long)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::ScaledIntegerNode::ScaledIntegerNode(e57::Node const&)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::IntegerNode::maximum() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::IntegerNode::minimum() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::CompressedVectorReader::close()'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::ImageFile::root() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::VectorNode::operator e57::Node() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::BlobNode::BlobNode(e57::Node const&)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::CompressedVectorNode::prototype() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::VectorNode::isDefined(std::string const&) const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::FloatNode::FloatNode(e57::Node const&)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::CompressedVectorNode::CompressedVectorNode(e57::ImageFile, e57::Node, e57::VectorNode)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::VectorNode::childCount() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StructureNode::get(long) const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::SourceDestBuffer::SourceDestBuffer(e57::ImageFile, std::string, signed char*, unsigned long, bool, bool, unsigned long)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StructureNode::elementName() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::CompressedVectorWriter::write(unsigned long)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StructureNode::isDefined(std::string const&) const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::CompressedVectorNode::CompressedVectorNode(e57::Node const&)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::FloatNode::minimum() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::CompressedVectorNode::operator e57::Node() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::Node::destImageFile() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::Node::elementName() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::Node::type() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StructureNode::operator e57::Node() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::ImageFile::ImageFile(std::string const&, std::string const&, std::string const&)'                                             
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::SourceDestBuffer::SourceDestBuffer(e57::ImageFile, std::string, double*, unsigned long, bool, bool, unsigned long)'           
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::ScaledIntegerNode::offset() const'                                                                                            
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::ImageFile::isOpen() const'                                                                                                    
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StringNode::value() const'                                                                                                   
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::VectorNode::get(std::string const&) const'                                                                                   
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StructureNode::get(std::string const&) const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StructureNode::StructureNode(e57::ImageFile)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::BlobNode::BlobNode(e57::ImageFile, long)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StructureNode::set(std::string const&, e57::Node)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::E57Utilities::getVersions(int&, int&, std::string&)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::ScaledIntegerNode::minimum() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::IntegerNode::IntegerNode(e57::Node const&)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::ScaledIntegerNode::scaledValue() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::IntegerNode::value() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::CompressedVectorWriter::close()'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StringNode::StringNode(e57::ImageFile, std::string)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::BlobNode::read(unsigned char*, long, unsigned long)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::FloatNode::maximum() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::IntegerNode::operator e57::Node() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::CompressedVectorNode::reader(std::vector<e57::SourceDestBuffer, std::allocator<e57::SourceDestBuffer> > const&)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::CompressedVectorNode::childCount() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::BlobNode::operator e57::Node() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StringNode::StringNode(e57::Node const&)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::CompressedVectorReader::read()'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::FloatNode::FloatNode(e57::ImageFile, double, e57::FloatPrecision, double, double)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StructureNode::childCount() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StructureNode::StructureNode(e57::Node const&)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::StringNode::operator e57::Node() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::ScaledIntegerNode::maximum() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::ImageFile::close()'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::BlobNode::byteCount() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::E57Utilities::errorCodeToString(e57::ErrorCode)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::FloatNode::operator e57::Node() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `typeinfo for e57::E57Exception'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::VectorNode::append(e57::Node)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::VectorNode::VectorNode(e57::ImageFile, bool)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::CompressedVectorNode::writer(std::vector<e57::SourceDestBuffer, std::allocator<e57::SourceDestBuffer> >&)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::VectorNode::get(long) const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::ScaledIntegerNode::scale() const'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::ImageFile::extensionsAdd(std::string const&, std::string const&)'
../libs/qCC_io/libQCC_IO_LIB.so: undefined reference to `e57::VectorNode::VectorNode(e57::Node const&)'
collect2: error: ld returned 1 exit status
qCC/CMakeFiles/CloudCompare.dir/build.make:3682: recipe for target 'qCC/CloudCompare' failed
make[2]: *** [qCC/CloudCompare] Error 1
CMakeFiles/Makefile2:742: recipe for target 'qCC/CMakeFiles/CloudCompare.dir/all' failed
make[1]: *** [qCC/CMakeFiles/CloudCompare.dir/all] Error 2
Makefile:116: recipe for target 'all' failed
make: *** [all] Error 2
I have the same installation of E57, which works with CC 2.6.1
daniel
Site Admin
Posts: 7711
Joined: Wed Oct 13, 2010 7:34 am
Location: Grenoble, France
Contact:

Re: E57 support in linux [was XERCES not found]

Post by daniel »

Can you spot any difference in the make scripts?
Daniel, CloudCompare admin
jgpallero
Posts: 44
Joined: Thu Dec 12, 2013 2:00 pm

Re: E57 support in linux [was XERCES not found]

Post by jgpallero »

daniel wrote:Can you spot any difference in the make scripts?
I'm not now at my computer, but it seems the E57 library is not present in the linking order
jgpallero
Posts: 44
Joined: Thu Dec 12, 2013 2:00 pm

Re: E57 support in linux [was XERCES not found]

Post by jgpallero »

daniel wrote:Can you spot any difference in the make scripts?
As I posted in my previous message, the problem comes from an incorrect linking order. For the CC 2.6.1, which I achieve to compile as it was explained in some days ago, the file trunk-2.6.1/build/qCC/CMakeFiles/CloudCompare.dir/link.txt contains in the compiling order

Code: Select all

,-Bstatic -lE57RefImpl -Wl
but the link.txt generated from the github codes does not contain these options

./build/qCC/CMakeFiles/CloudCompare.dir/link.txt is generated in the configuration step, but as I don't know the cmake build system internal, I can't fix it

ADDENDA: I've fixed by hand the problem (apparently, it works only adding the option -lE57RefImpl), and the bug is also present in the ccViewer link, i.e., in the file trunk/build/ccViewer/CMakeFiles/ccViewer.dir/link.txt

I've discovered also other bugs in some plugins code for the git source code:

The first one is related to the qPoissonRecon plugin:

Code: Select all

Scanning dependencies of target QPOISSON_RECON_LIB
[ 31%] Building CXX object plugins/qPoissonRecon/PoissonReconLib/CMakeFiles/QPOISSON_RECON_LIB.dir/Src_CC_wrap/PoissonReconLib.cpp.o
In file included from /home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/Geometry.h:378:0,
                 from /home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/Ply.h:220,
                 from /home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/PoissonReconLib.h:21,
                 from /home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/PoissonReconLib.cpp:18:
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/Geometry.inl: In constructor ‘CoredVectorMeshData<Vertex>::CoredVectorMeshData()’:
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/Geometry.inl:433:26: error: cannot convert ‘void**’ to ‘omp_lock_t*’ for argument ‘1’ to ‘void omp_init_lock(omp_lock_t*)’
  omp_init_lock(&writelock);
                          ^
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/Geometry.inl: In member function ‘int CoredVectorMeshData<Vertex>::addPolygon_s(const std::vector<int>&)’:
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/Geometry.inl:459:25: error: cannot convert ‘void**’ to ‘omp_lock_t*’ for argument ‘1’ to ‘void omp_set_lock(omp_lock_t*)’
  omp_set_lock(&writelock);
                         ^
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/Geometry.inl:464:27: error: cannot convert ‘void**’ to ‘omp_lock_t*’ for argument ‘1’ to ‘void omp_unset_lock(omp_lock_t*)’
  omp_unset_lock(&writelock);
                           ^
In file included from /home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/PointStream.h:174:0,
                 from /home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/PoissonReconLib.h:23,
                 from /home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/PoissonReconLib.cpp:18:
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/PointStream.inl: In member function ‘bool ASCIIOrientedPointStream<Real>::nextPoint(OrientedPoint3D<Real>&)’:
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/PointStream.inl:68:12: error: ‘DIMENSION’ was not declared in this scope
  float c[2*DIMENSION];
            ^
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/PointStream.inl:69:45: error: ‘c’ was not declared in this scope
  if( fscanf( _fp , " %f %f %f %f %f %f " , &c[0] , &c[1] , &c[2] , &c[3] , &c[4] , &c[5] )!=2*DIMENSION ) return false;
                                             ^
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/PointStream.inl:70:11: error: ‘c’ was not declared in this scope
  p.p[0] = c[0] , p.p[1] = c[1] , p.p[2] = c[2];
           ^
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/PointStream.inl: In member function ‘bool ASCIIOrientedPointStreamWithData<Real, Data>::nextPoint(OrientedPoint3D<Real>&, Data&)’:
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/PointStream.inl:247:12: error: ‘DIMENSION’ was not declared in this scope
  float c[2*DIMENSION];
            ^
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/PointStream.inl:248:45: error: ‘c’ was not declared in this scope
  if( fscanf( _fp , " %f %f %f %f %f %f " , &c[0] , &c[1] , &c[2] , &c[3] , &c[4] , &c[5] )!=2*DIMENSION ) return false;
                                             ^
/home/topo/Desktop/trunk/plugins/qPoissonRecon/PoissonReconLib/Src_CC_wrap/../Src/PointStream.inl:249:11: error: ‘c’ was not declared in this scope
  p.p[0] = c[0] , p.p[1] = c[1] , p.p[2] = c[2];
           ^
plugins/qPoissonRecon/PoissonReconLib/CMakeFiles/QPOISSON_RECON_LIB.dir/build.make:54: recipe for target 'plugins/qPoissonRecon/PoissonReconLib/CMakeFiles/QPOISSON_RECON_LIB.dir/Src_CC_wrap/PoissonReconLib.cpp.o' failed
make[2]: *** [plugins/qPoissonRecon/PoissonReconLib/CMakeFiles/QPOISSON_RECON_LIB.dir/Src_CC_wrap/PoissonReconLib.cpp.o] Error 1
CMakeFiles/Makefile2:682: recipe for target 'plugins/qPoissonRecon/PoissonReconLib/CMakeFiles/QPOISSON_RECON_LIB.dir/all' failed
make[1]: *** [plugins/qPoissonRecon/PoissonReconLib/CMakeFiles/QPOISSON_RECON_LIB.dir/all] Error 2
Makefile:116: recipe for target 'all' failed
make: *** [all] Error 2
I've deactivated the qPoissonRecon plugin, reconfigured and continue the compilation. It appears also an error in qPCV plugin:

Code: Select all

Scanning dependencies of target PCV_LIB
[ 52%] Building CXX object plugins/qPCV/PCV/CMakeFiles/PCV_LIB.dir/PCVContext.cpp.o
In file included from /home/topo/Desktop/trunk/plugins/qPCV/PCV/PCVContext.cpp:18:0:
/home/topo/Desktop/trunk/plugins/qPCV/PCV/PCVContext.h:70:81: error: ‘NULL’ was not declared in this scope
   void associateToEntity(CCLib::GenericCloud* aCloud, CCLib::GenericMesh* aMesh=NULL);
                                                                                 ^
plugins/qPCV/PCV/CMakeFiles/PCV_LIB.dir/build.make:54: recipe for target 'plugins/qPCV/PCV/CMakeFiles/PCV_LIB.dir/PCVContext.cpp.o' failed
make[2]: *** [plugins/qPCV/PCV/CMakeFiles/PCV_LIB.dir/PCVContext.cpp.o] Error 1
CMakeFiles/Makefile2:1177: recipe for target 'plugins/qPCV/PCV/CMakeFiles/PCV_LIB.dir/all' failed
make[1]: *** [plugins/qPCV/PCV/CMakeFiles/PCV_LIB.dir/all] Error 2
Makefile:116: recipe for target 'all' failed
make: *** [all] Error 2
Post Reply