forked from cvjena/nice-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreadme.txt
147 lines (110 loc) · 5.47 KB
/
readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
General CMake Notes:
=========================================
1. Indexing source code files:
Never use GLOB_RECURSE. It's evil. E.g. if you add or remove source files, CMake has no way of knowing that it should be re-run. Just list all the files in your CMakeLists.txt (or, if you think the list is excessively long, create a file called e.g. files.cmake, put the list in there and INCLUDE it in the CMakeLists.txt file.
2. Never do in-source builds. CMake creates many, many files, and you don't want to delete them all individually for a clean build. And there's no way to implement a safe "make clean" (e.g. your build system might be running a custom utility which generates files CMake knows nothing about).
Notes on NICE to CMAKE transformation
========================================
Todos
-----
- libmagic++ scheint sehr aufwendig in der benutzung unter Windows: How to build it with vs, anleitung:http://www.graphicsmagick.org/INSTALL-windows.html#windows-xp-vista-7-visual-c-6-0-through-9-0-compilation
unter windows doch einfacher: http://www.imagemagick.org/script/binary-releases.php#windows (sind nur die binaries, keine includes und libs)
http://www.imagemagick.org/Magick++/ sources runterladen (getan. TODO: entpacken c/libraries/ImageMagick-6.8.3-6-windows.zip)
braucht man überhaupt libmagick? warum nicht lieber opencv zum bilderlesen benutzen: momentan ist das lesen und schreiben eh mit throw exception not implemented verbunden:
void ImageFile::readerMagick ( GrayColorImageCommonImplementationT<P> *image )
{
fthrow ( ImageException, "Format not yet implemented (only available for standard images)." );
}
weil magick momentan der default imagereader ist: void ImageFile::reader(...), wenn keine libPNG und LibJpeg gegeben ist.
- make compilable without Qt
- make compileable without opengl
- regex lib nutzen von boost (->config.h)
- substitue FileMgt::DirectoryRecursive by platform independend code using boost::filesystem
- Implement ResouceStatistics for windows
- braucht man GLUT noch ? Alt??? enable build without glut atleast!!
- remove all warnings for function shadowing
- remove all warning unreachable code
- fixing all these includes of template definitons:
//#ifdef __GNUC__
#include "core/vector/RowMatrixT.tcc"
//#endif
tcc are not cpps, they need to be included into the header file otherwise template usage will result in linking errors
See, Inclusion model of Template classes: http://stackoverflow.com/questions/3705740/c-lnk2019-error-unresolved-external-symbol-template-classs-constructor-and
- porting core/basics/timer.h/cpp
highly unix dependend, better use 3rd party time functionality for now()
better use boost::timer ??
- stringtools highly os dependented
->recursive dir scan with "ls -r" syntax!!
use 3rd party lib like boost oder qt
use boost regex for regex syntax in stringtools::regex bla
NICE defs to care about
-----------------------
NICE_USELIB_CUDACHOLESKY
NICE_USELIB_IPP
NICE_USELIB_OPENMP
#ifdef NICE_USELIB_MATIO
NICE_USELIB_PNG
NICE_USELIB_JPG
NICE_USELIB_LIBMAGICK
#eigene definiton zum builden der sub-test-ordners
Notes Using Libraries:
======================
needed libraries windows:
------------------------
- freeglut (download from: http://freeglut.sourceforge.net/index.php#download)
adjust pathes GLUT_ROOT_PATH in root-CMakeLists.txt
CPPUNIT verwenden
---------------------
1) installation
1-a) linux
if not already in path then:
download source from http://sourceforge.net/projects/cppunit/files/cppunit/1.12.1/cppunit-1.12.1.tar.gz/download
unzip
create build_<pcname> dir
cd build_<pcname>
../configure - -prefix=<path>/build_<pcname>/install
make
make install
put <path>/build_<pcname>/install/include into system path variable, example in .bashrc:
PATH=/home/ruehle/libs/cppunit-1.12.1/build_sigma15/install/include/:$PATH
1-b) Windows:
download http://www.comp.nus.edu.sg/~cs3215/tools/cppunitAll.html
build with visual studio
put path to generated lib in path variable (pointing to the */include path)
2) enabling building cpp unit tests
NICE_BUILD_TESTS
running tests: <build ordner>: cmake
make
3) run the unit tests
im <build ordner>: cmake --output-on-failure
OpenCV inspired CMake notes:
===========================
Interessante Funktionen der OpenCV:
----------------------------------
macro add_all_subdirs()
set(_all_headers)
set(_all_sources)
set(_all_linkings)
#ge
foreach dir in subdirlist
{
add_directories( dir )
#add header, sources, linkings from subdir to _all_* variables
}
endmacro
set(NICE_CURR_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
aus OpenCVUtils.cmake:
macro(ocv_convert_to_full_paths VAR) # convert list of paths to full paths
macro(ocv_get_real_path VAR PATHSTR) # get absolute path with symlinks resolved
macro(ocv_list_add_suffix LST SUFFIX) # add suffix to each item in the list
macro(ocv_list_add_prefix LST PREFIX) # add prefix to each item in the list
macro(ocv_list_unique __lst)# stable & safe duplicates removal macro
OpenCVModule.cmake
ocv_glob_modules(pathcurrdir) -->in modules
in jedem untermodel, eg core
ocv_add_module(modname)
sets variable "the_module" => set(the_module opencv_${name})
extra abhängikeitens über zweites argument in der funktion, eg. ocv_add_module(core ${ZLIB_Lbla})
ocv_module_include_directories() ( auch mit zusatzincludes dann übergeben ${ZLib_include_Dir})
ocv_glob_module_sources() holt cpps und hpp h aus unterordnern -- sources bilden
ocv_create_module (binary build the module ->add_library, set_target etc