readme.txt 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. notes on porting NICE to WIN using CMAKE:
  2. -------
  3. 1. 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.
  4. 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).
  5. %%%% todos
  6. - 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
  7. unter windows doch einfacher: http://www.imagemagick.org/script/binary-releases.php#windows (sind nur die binaries, keine includes und libs)
  8. http://www.imagemagick.org/Magick++/ sources runterladen (getan. TODO: entpacken c/libraries/ImageMagick-6.8.3-6-windows.zip)
  9. braucht man überhaupt libmagick? warum nicht lieber opencv zum bilderlesen benutzen: momentan ist das lesen und schreiben eh mit throw exception not implemented verbunden:
  10. void ImageFile::readerMagick ( GrayColorImageCommonImplementationT<P> *image )
  11. {
  12. fthrow ( ImageException, "Format not yet implemented (only available for standard images)." );
  13. }
  14. weil magick momentan der default imagereader ist: void ImageFile::reader(...), wenn keine libPNG und LibJpeg gegeben ist.
  15. - make compilable without Qt
  16. - make compileable without opengl
  17. - regex lib nutzen von boost (->config.h)
  18. - substitue FileMgt::DirectoryRecursive by platform independend code using boost::filesystem
  19. - Implement ResouceStatistics for windows
  20. -
  21. - braucht man GLUT noch ? Alt??? enable build without glut atleast!!
  22. - remove all warnings for function shadowing
  23. - remove all warning unreachable code
  24. %%%%%
  25. needed libraries windows:
  26. freeglut (download from: http://freeglut.sourceforge.net/index.php#download)
  27. adjust pathes GLUT_ROOT_PATH in root-CMakeLists.txt
  28. %%%%%%
  29. fixing all these includes of template definitons:
  30. //#ifdef __GNUC__
  31. #include "core/vector/RowMatrixT.tcc"
  32. //#endif
  33. tcc are not cpps, they need to be included into the header file otherwise template usage will result in linking errors
  34. See, Inclusion model of Template classes: http://stackoverflow.com/questions/3705740/c-lnk2019-error-unresolved-external-symbol-template-classs-constructor-and
  35. ------------------------------------------
  36. porting core/basics/timer.h/cpp
  37. highly unix dependend
  38. better use 3rd party time functionality for now()
  39. better use
  40. boost::timer ??
  41. ---------------------------
  42. stringtools highly os dependented
  43. ->recursive dir scan with "ls -r" syntax!!
  44. use 3rd party lib like boost oder qt
  45. use boost regex for regex syntax in stringtools::regex bla
  46. -----------------------------------------------------------------------
  47. macro add_all_subdirs()
  48. set(_all_headers)
  49. set(_all_sources)
  50. set(_all_linkings)
  51. #ge
  52. foreach dir in subdirlist
  53. {
  54. add_directories( dir )
  55. #add header, sources, linkings from subdir to _all_* variables
  56. }
  57. endmacro
  58. set(NICE_CURR_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
  59. #### geile funktionen der OpenCV:
  60. ---aus OpenCVUtils.cmake:
  61. macro(ocv_convert_to_full_paths VAR) # convert list of paths to full paths
  62. macro(ocv_get_real_path VAR PATHSTR) # get absolute path with symlinks resolved
  63. macro(ocv_list_add_suffix LST SUFFIX) # add suffix to each item in the list
  64. macro(ocv_list_add_prefix LST PREFIX) # add prefix to each item in the list
  65. macro(ocv_list_unique __lst)# stable & safe duplicates removal macro
  66. OpenCVModule.cmake
  67. ocv_glob_modules(pathcurrdir) -->in modules
  68. in jedem untermodel, eg core
  69. ocv_add_module(modname)
  70. sets variable "the_module" => set(the_module opencv_${name})
  71. extra abhängikeitens über zweites argument in der funktion, eg. ocv_add_module(core ${ZLIB_Lbla})
  72. ocv_module_include_directories() ( auch mit zusatzincludes dann übergeben ${ZLib_include_Dir})
  73. ocv_glob_module_sources() holt cpps und hpp h aus unterordnern -- sources bilden
  74. ocv_create_module (binary build the module ->add_library, set_target etc
  75. #######
  76. defs to care about
  77. NICE_USELIB_CUDACHOLESKY
  78. NICE_USELIB_IPP
  79. NICE_USELIB_OPENMP
  80. #ifdef NICE_USELIB_MATIO
  81. NICE_USELIB_PNG
  82. NICE_USELIB_JPG
  83. NICE_USELIB_LIBMAGICK
  84. #eigene definiton zum builden der sub-test-ordners
  85. NICE_BUILD_TESTS http://www.comp.nus.edu.sg/~cs3215/tools/cppunitAll.html
  86. running tests: <build ordner>: cmake
  87. running tests mit schönen übersicht: <build ordner>: cmake --output-on-failure
  88. NICE_BUILD_PROGS
  89. /wd"4244" /wd"4100" /wd"4127" /wd"4091"
  90. #adding custom build step:
  91. if(BUILD_CORE_TESTS_PERFORM_AS_POSTBUILD_STEP)
  92. add_custom_command(TARGET ${__testname}
  93. POST_BUILD
  94. COMMAND "$<TARGET_FILE:${__testname}>"
  95. COMMENT "Unit Tests...")
  96. else()