[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>