[Gmsh] Add gmsh in existing cmake project

Bruno Correia da Silva bcs2 at cin.ufpe.br
Thu Jan 17 20:53:47 CET 2013


Hey Martin,

 Thanks for your support.
 I did what you explained about add "MEdge.h" and "MFace.h". After this, i
change again my CMAKELIST.txt.
 I'm using UNIX makefile compiler and default native compilers.
 For better explained: I'm using the FMDB library.

My CMAKELIST now is:
"
*set (APPLICATIONS /home/padmec/applications)
 ## FMDB
set (FMDB_INCLUDE "${APPLICATIONS}/FMDB-2011/**include" CACHE PATH
"Directory where FMDB header files can be found")
set (FMDB_LIB "${APPLICATIONS}/FMDB-2011/**lib" CACHE PATH "Directory where
the FMDB library can be found")
include_directories(${FMDB_**INCLUDE})
link_directories(${FMDB_LIB})
link_libraries(FMDB-O)

#GMSH
SET( GMSH_SRC "/home/padmec/Desktop/gmsh/**gmsh" CACHE STRING "GMSH SRC" )
SET( GMSH_INC
    "${GMSH_SRC}/Common"
    "${GMSH_SRC}/Geo"
    "${GMSH_SRC}/Plugin"
    "${GMSH_SRC}/Solver"
    "${GMSH_SRC}/Numeric"
    "${GMSH_SRC}/build/Common" )
INCLUDE_DIRECTORIES( ${GMSH_INC} )

SET( GMSH_LIB "${GMSH_SRC}/lib" )

add_executable(Remeshing__Proj ${SRCS} ${HDRS})
TARGET_LINK_LIBRARIES(Remeshing__Proj Gmsh )
*"
And show me this errors:
"*
/home/padmec/applications/FMDB-2011/include/iofwd.h: At global scope:
/home/padmec/applications/FMDB-2011/include/iofwd.h:25:1: error: ‘include’
does not name a type
In file included from /home/padmec/Desktop/gmsh/gmsh/Numeric/Numeric.h:12:0,
                 from /home/padmec/Desktop/gmsh/gmsh/Geo/GFace.h:19,
                 from /home/padmec/Desktop/gmsh/gmsh/Geo/GModel.h:16,
                 from
/home/padmec/Downloads/Remeshing__project/src/Remover.cpp:10:
/home/padmec/applications/FMDB-2011/include/SPoint3.h: In function ‘SPoint3
operator+(const SPoint3&, const SPoint3&)’:
/home/padmec/applications/FMDB-2011/include/SPoint3.h:85:16: error:
redefinition of ‘SPoint3 operator+(const SPoint3&, const SPoint3&)’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:49:16: error: ‘SPoint3
operator+(const SPoint3&, const SPoint3&)’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h: In function ‘SPoint3
operator-(const SPoint3&, const SPoint3&)’:
/home/padmec/applications/FMDB-2011/include/SPoint3.h:88:16: error:
redefinition of ‘SPoint3 operator-(const SPoint3&, const SPoint3&)’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:52:16: error: ‘SPoint3
operator-(const SPoint3&, const SPoint3&)’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h: At global scope:
/home/padmec/applications/FMDB-2011/include/SPoint3.h:91:13: error:
redefinition of ‘void SPoint3::setPosition(double, double, double)’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:55:13: error: ‘void
SPoint3::setPosition(double, double, double)’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h:94:13: error:
redefinition of ‘void SPoint3::getPosition(double*, double*, double*) const’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:58:13: error: ‘void
SPoint3::getPosition(double*, double*, double*) const’ previously defined
here
/home/padmec/applications/FMDB-2011/include/SPoint3.h:97:13: error:
redefinition of ‘void SPoint3::position(double*) const’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:61:13: error: ‘void
SPoint3::position(double*) const’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h:100:15: error:
redefinition of ‘double SPoint3::x() const’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:64:15: error: ‘double
SPoint3::x() const’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h:103:15: error:
redefinition of ‘double SPoint3::y() const’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:67:15: error: ‘double
SPoint3::y() const’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h:106:15: error:
redefinition of ‘double SPoint3::z() const’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:70:15: error: ‘double
SPoint3::z() const’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h:109:18: error:
redefinition of ‘SPoint3& SPoint3::operator=(const SPoint3&)’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:73:18: error: ‘SPoint3&
SPoint3::operator=(const SPoint3&)’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h:112:13: error:
redefinition of ‘void SPoint3::operator+=(const SPoint3&)’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:76:13: error: ‘void
SPoint3::operator+=(const SPoint3&)’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h:115:13: error:
redefinition of ‘void SPoint3::operator-=(const SPoint3&)’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:79:13: error: ‘void
SPoint3::operator-=(const SPoint3&)’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h:118:13: error:
redefinition of ‘void SPoint3::operator*=(double)’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:82:13: error: ‘void
SPoint3::operator*=(double)’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h:121:16: error:
redefinition of ‘SPoint3 SPoint3::operator*(double)’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:88:16: error: ‘SPoint3
SPoint3::operator*(double)’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h:124:16: error:
redefinition of ‘double& SPoint3::operator[](int)’
/home/padmec/Desktop/gmsh/gmsh/Geo/SPoint3.h:91:16: error: ‘double&
SPoint3::operator[](int)’ previously defined here
/home/padmec/applications/FMDB-2011/include/SPoint3.h:127:15: error:
redefinition of ‘double SPoint3::operator[](int) const’
....
In file included from /home/padmec/Desktop/gmsh/gmsh/Numeric/Numeric.h:13:0,
                 from /home/padmec/Desktop/gmsh/gmsh/Geo/GFace.h:19,
                 from /home/padmec/Desktop/gmsh/gmsh/Geo/GModel.h:16,
                 from
/home/padmec/Downloads/Remeshing__project/src/Remover.cpp:10:
/home/padmec/applications/FMDB-2011/include/SVector3.h:27:7: error:
redefinition of ‘class SVector3’
/home/padmec/Desktop/gmsh/gmsh/Geo/SVector3.h:15:7: error: previous
definition of ‘class SVector3’
/home/padmec/applications/FMDB-2011/include/SVector3.h:96:16: error:
redefinition of ‘double& SVector3::operator[](int)’
/home/padmec/Desktop/gmsh/gmsh/Geo/SVector3.h:40:11: error: ‘double&
SVector3::operator[](int)’ previously defined here
/home/padmec/applications/FMDB-2011/include/SVector3.h:99:15: error:
redefinition of ‘double SVector3::operator[](int) const’
/home/padmec/Desktop/gmsh/gmsh/Geo/SVector3.h:41:10: error: ‘double
SVector3::operator[](int) const’ previously defined here
/home/padmec/applications/FMDB-2011/include/SVector3.h:102:16: error:
redefinition of ‘double& SVector3::operator()(int)’
/home/padmec/Desktop/gmsh/gmsh/Geo/SVector3.h:42:11: error: ‘double&
SVector3::operator()(int)’ previously defined here
/home/padmec/applications/FMDB-2011/include/SVector3.h:105:15: error:
redefinition of ‘double SVector3::operator()(int) const’
/home/padmec/Desktop/gmsh/gmsh/Geo/SVector3.h:43:10: error: ‘double
SVector3::operator()(int) const’ previously defined here*
"
Anyone used FMDB and GMSH in a same project? Anyone saw similar errors?

Thanks,
Best Regards
Bruno Correia

--------------------

Hi Bruno,

 try to add

 #include "MEdge.h"
 #include "MFace.h"

 at the beginning of your code to remove the errors you see. I'm not a cmake
expert either, but I think that the recommended practice is to use
target_link_libraries(TARGET_NAME lib1 lib2 ...) and not link_directories.

Best regards,

   Martin Vymazal



2013/1/3 Bruno Correia da Silva <bcs2 at cin.ufpe.br>

> Sorry,
>
>  I'm using ubuntu 12.04.
>
> att.
> Bruno Correia
>
> 2013/1/3 Bruno Correia da Silva <bcs2 at cin.ufpe.br>:
> >  Hey guys,
> >
> >   I'm newbie in CMake and linux and i'm still have problems to put
> > gmsh in my project to make a call from source code.
> >
> >   When I add this line in my in my root project path, in file
> CMakeLists.txt:
> > "
> > #GMSH
> > SET (GMSH_LIB_PATH "/home/padmec/gmsh/lib")
> > link_directories(${GMSH_LIB_PATH})
> > link_libraries(Gmsh)
> > SET (GMSH_INCLUDE_PATH "/home/padmec/gmsh/include/gmsh")
> > include_directories(${GMSH_INCLUDE_PATH})
> > "
> >
> > And when i only add this lines in my cpp file:
> > "
> > #include "Gmsh.h"
> > #include "GModel.h"
> > #include "MElement.h"
> > #include "MVertex.h"
> > #include <iostream>
> >
> > "
> > Show me this error.
> > "
> >
> > In file included from
> > /home/padmec/Downloads/Remeshing__project/src/Remover.cpp:11:0:
> > /home/padmec/gmsh/include/gmsh/MElement.h: At global scope:
> > /home/padmec/gmsh/include/gmsh/MElement.h:123:11: error: ‘MEdge’ does
> > not name a type
> > /home/padmec/gmsh/include/gmsh/MElement.h:126:34: error: ‘MEdge’ does
> > not name a type
> > /home/padmec/gmsh/include/gmsh/MElement.h:126:42: error: ISO C
> > forbids declaration of ‘edge’ with no type [-fpermissive]
> > /home/padmec/gmsh/include/gmsh/MElement.h:143:11: error: ‘MFace’ does
> > not name a type
> > /home/padmec/gmsh/include/gmsh/MElement.h:146:34: error: ‘MFace’ does
> > not name a type
> > /home/padmec/gmsh/include/gmsh/MElement.h:146:42: error: ISO C
> > forbids declaration of ‘face’ with no type [-fpermissive]
> > /home/padmec/gmsh/include/gmsh/MElement.h:364:11: error: ‘MEdge’ does
> > not name a type
> > /home/padmec/gmsh/include/gmsh/MElement.h:369:10: error: ‘MEdge’ does
> > not name a type
> > /home/padmec/gmsh/include/gmsh/MElement.h:382:11: error: ‘MFace’ does
> > not name a type
> > /home/padmec/gmsh/include/gmsh/MElement.h:387:10: error: ‘MFace’ does
> > not name a type
> > make[2]: Leaving directory `/home/padmec/Downloads/Remeshing__project'
> >
> > "
> > Let's go to the asking:
> > First, someone saw this error before?
> > Second,  someplace has a explicit way to add gmsh in a project using
> CMake?
> > I saw tutorial folders in gmsh source code, but doesn't help so much.
> >
> > Best regards
> > att.
> > Bruno Correia
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.geuz.org/pipermail/gmsh/attachments/20130117/10d10e84/attachment.html>