[Gmsh] Add gmsh in existing cmake project

Bruno Correia da Silva bcs2 at cin.ufpe.br
Fri Feb 8 16:35:40 CET 2013


Hello,

 For close this thread my solution for my problem is rename class GMSH or
FMDB.
 Both has the equal name in some class and some techniques don't work to
make everything build safe.
 Later i'll go try again.
 Thanks for all help Martin,

 Att.
Bruno Correia

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

> Hello Martin,
>
>  Thanks for your attention and support.
>  The include error  was my mistake in exploring the code.
>  The conflict with FMDB and GMSH is present. Now i am trying to use
> namespace to isolated the problem changing the code of GMSH. When happen
> some good news i'll return here.
>
>  I think the better question to the Forum is: Someone used in same project
> FMDB and GMSH? Using API, and not system call?
>
> Best regards,
> Bruno Correia
>
>
>
> 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
>
>
> 2013/1/17 Bruno Correia da Silva <bcs2 at cin.ufpe.br>
>
>> 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/20130208/cbf22bb4/attachment.html>