[Gmsh] Add gmsh in existing cmake project

Martin Vymazal martin.vymazal at vki.ac.be
Fri Jan 18 10:04:53 CET 2013


Hi Bruno,

 check two things: 
 1) iofwd.h, line 25: make sure that whatever you put there has this form:
     #include "my_file.h" // The # at the beginning is important.
  and not
     include "my_file.h" or include<my_file.h>

  Use < > for STL headers.

 2) if iofwd is a header created by you, make sure you used include guards. 
The first two lines and the last line of your file should say something like
  #ifndef IOFWD_H   // first line
  #define IOFWD_H  // second line

   ... your code ....

 #endif // last line of the file.

 Best regards,

   Martin Vymazal


On Thursday 17 January 2013 16:53:47 Bruno Correia da Silva wrote:

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/20130118/55cafd0b/attachment.html>