Next revision | Previous revision |
windows_compilation [2009/02/12 18:01] – created bp | windows_compilation [2010/10/21 17:46] (current) – bp |
---|
This short guide describes the steps necessary to compile oofem using Microsoft Visual c++ compiler. | This short guide describes the steps necessary to compile oofem using Microsoft Visual c++ compiler. |
| ===== Compiling trunk (svn) version and versions 1.9 and later ===== |
| These instructions are valid since revision 326. |
| - for trunk version, get the development version from svn repository. This requires to have svn client installed. If you don't have any, you can try [[http://tortoisesvn.net/ | TortoiseSVN]] client. For release version, download it from oofem website and unpack it. |
| - Create a new, empty project (Win32 console application). |
| - In the oofem top directory, create src/config directory. Download [[http://mech.fsv.cvut.cz/~bp/download/oofem-win/oofemcfg.h|oofemcfg.h]] and [[http://mech.fsv.cvut.cz/~bp/download/oofem-win/oofemdef.h|oofemdef.h]] files into this directory. |
| - Add all source files, located in src/oofemlib, src/oofemlib/xfem, src/config, src/sm, src/tm, src/fm, and src/dss sub-directories, into the project. |
| - Add also src/main/main.C and src/main/usrdefsub.C files. |
| - In the project settings [Menu:Project->Properties, select Configuration Properties->C/C++->Advanced->Compile As), ** add "/TP" compiler option**. This will force ".C" files to be recognized as c++ files. Make sure, that you set this option for all targets. |
| - Under Project Configuration Properties->C/C++->General, add **all subdirectories under scr directory** to the “Additional Include Directories” item. |
| - Under the Project Configuration Properties->C/C++->Preprocessor->Preprocessor Definitions, add set of symbols "%%__MODULENAME_MODULE%%", where the MODULENAME is the name of module(s) you want to include. For example, add "%%__OOFEMLIB_MODULE%%; %%__SM_MODULE%%; %%__TM_MODULE%%; %%__FM_MODULE%%; %%__DSS_MODULE%%" if you want to include oofemlib, sm, tm, fm, and dss modules (recommended). Also define "%%__OOFEM%%", "%%__ENABLE_COMPONENT_LABELS%%" and "DEBUG" (if you want a debug version of OOFEM) macros. |
| - For version 1.9, open sm/src/compodamagemat.C, locate "CompoDamageMat :: ~CompoDamageMat();" (the semicolon at the end is important!) and if found, delete this line. |
| - Now you should be ready to build oofem solver executable. |
| |
| |
| |
| ===== Compiling release version (1.8) ===== |
| |
- Create a new, empty project (Win32 console application) | - Create a new, empty project (Win32 console application) |
- In the project settings, add "/TP" compiler option. This will force ".C" files to be recognized as c++ files. | - In the project settings, add "/TP" compiler option. This will force ".C" files to be recognized as c++ files. |
- Get oofemcfg.h and oofemdef.h files from OOFEM_TOP_DIR/base directory. Then #define HAVE_BOOLTYPE, TIME_WITH_SYS_TIME and HAVE_MACRO_VA_ARGS. | - Get oofemcfg.h and oofemdef.h files from OOFEM_TOP_DIR/base directory. Then #define HAVE_BOOLTYPE, TIME_WITH_SYS_TIME and HAVE_MACRO_VA_ARGS. |
- Under the VC project option/preprocessor definition, define __MODULENAME_MODULE (where the MODULENAME is the name of module(s) you want to include, for example define __SM_MODULE and __OOFEMLIB_MODULE). Also define __OOFEM and DEBUG (if you want a debug version of OOFEM) macros. | - Under the VC project option/preprocessor definition, define set of symbols "%%__MODULENAME_MODULE%%", where the MODULENAME is the name of module(s) you want to include. For example, define" %%__SM_MODULE%%" and "%%__OOFEMLIB_MODULE%%" if you want to include oofemlib and sm modules. Also define "%%__OOFEM%%" and "DEBUG" (if you want a debug version of OOFEM) macros. |
- Open inverseit.h header file, and find out the “z” definition. Then change the original definition into <code>FloatArray* z=new(FloatArray[nc]);</code> and don’t forget to add <code>delete [] z;</code> at the end of usage; | - Open inverseit.h header file, and find out the “z” definition. Then change the original definition into <code>FloatArray* z=new(FloatArray[nc]);</code> and don’t forget to add <code>delete [] z;</code> at the end of usage; |
- In timer.h file, some functions only have declaration but no definitions in the corresponding cpp file. Comment out the following declarations: <code> | - In timer.h file, some functions only have declaration but no definitions in the corresponding cpp file. Comment out the following declarations: <code> |