Page 1 of 3
XERCES not found
Posted: Sun Jun 16, 2013 3:56 pm
by pacoes3d
Hello,
I've problems compiling with E57.
XERECES-C is installed on the system (OpenSuSE 12.2), but cmake cannot recognize it. I've not found the findxerces.cmake or similar file to search. Creating a findxercesc.cmake on Cloudcompare root directory doesn't solve.
¿Any idea?.
Thanks in advance.
Francisco.
Re: XERCES not found
Posted: Sun Jun 16, 2013 7:01 pm
by daniel
On Windows, the findxerces module is provided by libE57 (in \cmake\Modules). Do you have it on Linux?
Re: XERCES not found
Posted: Sun Jun 16, 2013 9:14 pm
by pacoes3d
Hello, Daniel,
Thank you for que quick answer.
For any reason, findxerces is found at contrib/cmake/modules, but it only search for a windows installation, so I have to replace it with the libe57 tailored version (original doesn't find xercesc), but this carries another nuissance :
E57support.cmake has a problem in line 57:
target_link_libraries( ${ARGV0} debug ${Xerces_LIBRARY_DEBUG} optimized ${Xerces_LIBRARY_RELEASE} ${Boost_LIBRARIES} )
On standard xerces-c distributions (AFAIK), there is not a special debug library, so XERCES_LIBRARY_DEBUG points to Not found, and Cmake fails. Xerces_LIBRARY should be replaced with XERCESC_LIBRARY, I suppose.
Next problem arise with qCC. In directory qCC/CMakeFiles there is not CMakefiles.txt, but CMakeFiles/, so cmake fails. I'm tracing now.
Enclose my tailored version of findXERCESC.cmake.:
Code: Select all
# - Try to find Xerces-C
# Once done this will define
#
# XERCESC_FOUND - system has Xerces-C
# XERCESC_INCLUDE - the Xerces-C include directory
# XERCESC_LIBRARY - Link these to use Xerces-C
# XERCESC_VERSION - Xerces-C found version
IF (XERCESC_INCLUDE AND XERCESC_LIBRARY)
# in cache already
SET(XERCESC_FIND_QUIETLY FALSE)
ENDIF (XERCESC_INCLUDE AND XERCESC_LIBRARY)
OPTION(XERCESC_STATIC "Set to ON to link your project with static library (instead of DLL)." ON)
IF (NOT ${XERCESC_WAS_STATIC} STREQUAL ${XERCESC_STATIC})
UNSET(XERCESC_LIBRARY CACHE)
UNSET(XERCESC_LIBRARY_DEBUG CACHE)
ENDIF (NOT ${XERCESC_WAS_STATIC} STREQUAL ${XERCESC_STATIC})
SET(XERCESC_WAS_STATIC ${XERCESC_STATIC} CACHE INTERNAL "" )
FIND_PATH(XERCESC_INCLUDE NAMES xercesc/util/XercesVersion.hpp
PATHS
$ENV{XERCESC_INCLUDE_DIR}
${XERCESC_INCLUDE_DIR}
/usr/local/include
/usr/include
)
IF (XERCESC_STATIC)
FIND_LIBRARY(XERCESC_LIBRARY NAMES xerces-c_static_3 xerces-c-3.1 xerces-c
PATHS
$ENV{XERCESC_LIBRARY_DIR}
${XERCESC_LIBRARY_DIR}
/usr/lib64
/usr/local/lib
)
FIND_LIBRARY(XERCESC_LIBRARY_DEBUG NAMES xerces-c_static_3D xerces-c-3.1D
PATHS
$ENV{XERCESC_LIBRARY_DIR}
${XERCESC_LIBRARY_DIR}
/usr/lib64
/usr/local/lib
)
ADD_DEFINITIONS( -DXERCES_STATIC_LIBRARY )
ELSE (XERCESC_STATIC)
FIND_LIBRARY(XERCESC_LIBRARY NAMES xerces-c_3
PATHS
$ENV{XERCESC_LIBRARY_DIR}
${XERCESC_LIBRARY_DIR}
)
FIND_LIBRARY(XERCESC_LIBRARY_DEBUG NAMES xerces-c_3D
PATHS
$ENV{XERCESC_LIBRARY_DIR}
${XERCESC_LIBRARY_DIR}
)
ENDIF (XERCESC_STATIC)
IF (XERCESC_INCLUDE AND XERCESC_LIBRARY)
SET(XERCESC_FOUND TRUE)
ELSE (XERCESC_INCLUDE AND XERCESC_LIBRARY)
SET(XERCESC_FOUND FALSE)
ENDIF (XERCESC_INCLUDE AND XERCESC_LIBRARY)
IF(XERCESC_FOUND)
FIND_PATH(XERCESC_XVERHPPPATH NAMES XercesVersion.hpp PATHS
${XERCESC_INCLUDE}
PATH_SUFFIXES xercesc/util)
IF ( ${XERCESC_XVERHPPPATH} STREQUAL XERCESC_XVERHPPPATH-NOTFOUND )
SET(XERCES_VERSION "0")
ELSE( ${XERCESC_XVERHPPPATH} STREQUAL XERCESC_XVERHPPPATH-NOTFOUND )
FILE(READ ${XERCESC_XVERHPPPATH}/XercesVersion.hpp XVERHPP)
STRING(REGEX MATCHALL "\n *#define XERCES_VERSION_MAJOR +[0-9]+" XVERMAJ
${XVERHPP})
STRING(REGEX MATCH "\n *#define XERCES_VERSION_MINOR +[0-9]+" XVERMIN
${XVERHPP})
STRING(REGEX MATCH "\n *#define XERCES_VERSION_REVISION +[0-9]+" XVERREV
${XVERHPP})
STRING(REGEX REPLACE "\n *#define XERCES_VERSION_MAJOR +" ""
XVERMAJ ${XVERMAJ})
STRING(REGEX REPLACE "\n *#define XERCES_VERSION_MINOR +" ""
XVERMIN ${XVERMIN})
STRING(REGEX REPLACE "\n *#define XERCES_VERSION_REVISION +" ""
XVERREV ${XVERREV})
SET(XERCESC_VERSION ${XVERMAJ}.${XVERMIN}.${XVERREV})
ENDIF ( ${XERCESC_XVERHPPPATH} STREQUAL XERCESC_XVERHPPPATH-NOTFOUND )
IF(NOT XERCESC_FIND_QUIETLY)
MESSAGE(STATUS "Found Xerces-C: ${XERCESC_LIBRARY}")
MESSAGE(STATUS " : ${XERCESC_INCLUDE}")
MESSAGE(STATUS " Version: ${XERCESC_VERSION}")
ENDIF(NOT XERCESC_FIND_QUIETLY)
ELSE(XERCESC_FOUND)
MESSAGE(FATAL_ERROR "Could not find Xerces-C !")
ENDIF(XERCESC_FOUND)
MARK_AS_ADVANCED(XERCESC_INCLUDE XERCESC_LIBRARY)
Re: XERCES not found
Posted: Tue Jun 18, 2013 7:36 pm
by daniel
Thanks for the feedback. And indeed, the support for E57 was only for Windows up to now.
Can you push your modifications on the github trunk?
Re: XERCES not found
Posted: Wed Jun 19, 2013 6:45 pm
by pacoes3d
Hello, Daniel,
Thanks for the effort, Linux users will try to "rememer" you we exist :-D
I will try. I'm not an github regular user.
Best regards.
Re: XERCES not found
Posted: Mon Aug 18, 2014 7:10 pm
by daniel
XIOT (for X3D files support) requires Xerces as well.
However, Xiot is clearly not working very well. We are currently looking for a reliable (and GPL) way to load X3D files.
Re: XERCES not found
Posted: Thu Aug 21, 2014 5:17 pm
by ralph058
Hi Daniel
My goal was to find a means to compare a PCL point cloud (PCD) of a person with an X3D model of a person (H-Anim) and scale them to match. I had intended to use libx3d (LGPL) and generate a PCD from the model. Your library seemed to fill the bill for me without having to create things (too much) from scratch.
I haven't coded for many years and learn best from examples. There are too few examples in libx3d for me to be of use. So, I have to revert to documentation.
Your library seemed to fill the bill because it had the CloudCompare, PCD input and X3D input. With your forum, I had hoped for a resource when I had issues. I can't seem to get it to recognize my installation of Xerces. Although I could still write my own libx3d interface, if I need Xerces, I can't use the CC library.
Ralph
Re: XERCES not found
Posted: Thu Jul 16, 2015 10:03 am
by jgpallero
daniel wrote:Thanks for the feedback. And indeed, the support for E57 was only for Windows up to now.
Can you push your modifications on the github trunk?
I know this answer is a bit old, but is still valid? I'm trying to compile CloudCOmpare 2.6.1 on Debian and I'm having problems finding xerces. I've compiled the E57 library and put the path on the LIBE57_INSTALL_DIR and there is no problem. But also I've compiled xerces-c-3.1.2 and put its path in XERCES_ROOT, but I obtain
Code: Select all
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 xerces installation folder contains bin/, include/ and lib/ folders, and the Include/ one contains xercesc/dom/, xercesc/framework/, xercesc/internal/, xercesc/parsers/, xercesc/sax/, xercesc/sax2/, xercesc/util/, xercesc/validators/, and xercesc/xinclude/ subfolders
Re: XERCES not found
Posted: Thu Jul 16, 2015 10:49 am
by daniel
In the CMake script/configuration of CloudCompare, you don't need to set the XERCES_ROOT variable but the ' Xerces_INCLUDE_DIR' and 'Xerces_LIBRARY_RELEASE' or 'Xerces_LIBRARY_DEBUG' instead (at least on Windows - and you may need to display the 'advanced' variables if you use CMake GUI).
I guess on Linux/gcc you can skip the debug library file.
Does it help?
Re: XERCES not found
Posted: Thu Jul 16, 2015 12:48 pm
by jgpallero
daniel wrote:In the CMake script/configuration of CloudCompare, you don't need to set the XERCES_ROOT variable but the ' Xerces_INCLUDE_DIR' and 'Xerces_LIBRARY_RELEASE' or 'Xerces_LIBRARY_DEBUG' instead (at least on Windows - and you may need to display the 'advanced' variables if you use CMake GUI).
I guess on Linux/gcc you can skip the debug library file.
Does it help?
Thank you for your answer. I'm using cmake-gui 3.2.2 in Debian Sid. When I try to configure CloudCompare I see only the XERCES_ROOT, but not Xerces_LIBRARY_RELEASE nor Xerces_LIBRARY_DEBUG
Thanks