Procházet zdrojové kódy

initial simple cmake system

Johannes Ruehle před 12 roky
rodič
revize
f2956e6f9a

+ 10 - 10
CMakeLists.txt

@@ -3,10 +3,10 @@ project (NICELibrary)
 
 include(CheckSymbolExists)
 
-include(cmake/OpenCVUtils.cmake REQUIRED)
-include(cmake/OpenCVDetectCXXCompiler.cmake REQUIRED)
-include(cmake/NiceModules.cmake REQUIRED)
-include(cmake/OpenCVCompilerOptions.cmake REQUIRED)
+#include(cmake/OpenCVUtils.cmake REQUIRED)
+#include(cmake/OpenCVDetectCXXCompiler.cmake REQUIRED)
+#include(cmake/NiceModules.cmake REQUIRED)
+#include(cmake/OpenCVCompilerOptions.cmake REQUIRED)
 
 # The version number.
 set(NICELibrary_VERSION_MAJOR 1)
@@ -36,7 +36,7 @@ if (OPENMP_FOUND)
     ADD_DEFINITIONS( "-DNICE_USELIB_OPENMP")
 endif()
 
-find_package(PNG)
+#find_package(PNG)
 if (PNG_FOUND)
   INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIRS})
   ADD_DEFINITIONS( "-DNICE_USELIB_PNG")
@@ -58,7 +58,7 @@ set(BUILD_CORE_BASICS ON)
 #set(BUILD_CORE_IMAGE ON)
 #set(BUILD_CORE_MATLABACCESS ON)
 
-#set(BUILD_CORE_PROGS ON)
+set(BUILD_CORE_PROGS ON)
 
 
 set(OPENCV_LIB_INSTALL_PATH lib)
@@ -70,8 +70,8 @@ INCLUDE_DIRECTORIES(core)
 set(the_module "nice")
 
 set(NICE_CURR_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
-SUBDIRLIST(__listSubDirs "${NICE_CURR_DIR}")
-ocv_glob_modules( ${NICE_CURR_DIR} )
+#SUBDIRLIST(__listSubDirs "${NICE_CURR_DIR}")
+#ocv_glob_modules( ${NICE_CURR_DIR} )
 # foreach(_curSubdir ${__listSubDirs})
 	# ocv_get_real_path(__modpath "${NICE_CURR_DIR}/${_curSubdir}/")
 	# if(EXISTS "${__modpath}/CMakeLists.txt")
@@ -81,10 +81,10 @@ ocv_glob_modules( ${NICE_CURR_DIR} )
 		# ocv_glob_modules( ${__modpath} )
 	# endif()
 # endforeach()
-#ADD_SUBDIRECTORY(core bin)
+ADD_SUBDIRECTORY(core)
   
 # doxygen support
-FIND_PROGRAM(DOXYGEN_EXECUTABLE "doxygen")
+#FIND_PROGRAM(DOXYGEN_EXECUTABLE "doxygen")
 
 
 #cmake code from: https://github.com/hmeyer/dcmtk/blob/master/CMakeLists.txt

+ 72 - 4
core/CMakeLists.txt

@@ -1,11 +1,79 @@
+include( corefiles.cmake)
+include( progfiles.cmake)
+#include( testfiles.cmake)
 
+#message(STATUS "nice_core_hdr:${NICE_CORE_HDR}")
+
+ADD_LIBRARY(nice_core ${NICE_BUILD_LIBS_STATIC_SHARED} ${NICE_CORE_HDR} ${NICE_CORE_SRC})
+TARGET_LINK_LIBRARIES(nice_core ${Boost_LIBRARIES})
+INSTALL(TARGETS nice_core DESTINATION lib)
+
+if(BUILD_CORE_PROGS)
+  message(STATUS "building progs:")
+  foreach(__progcpp ${NICE_PROGFILES_SRC})
+    message(STATUS "progcpp: ${__progcpp}")
+    get_filename_component(__progname ${__progcpp} NAME_WE )
+    message(STATUS "progname: ${__progname}")
+    ADD_EXECUTABLE( ${__progname} ${__progcpp})
+    TARGET_LINK_LIBRARIES(${__progname} nice_core)
+    INSTALL(TARGETS ${__progname} DESTINATION bin)
+  endforeach()
+endif()
+
+#####
+ set(the_module "nice_core")
+ if(ENABLE_SOLUTION_FOLDERS)
+    set_target_properties(${the_module} PROPERTIES FOLDER "modules")
+  endif()
+	
+  set_target_properties(${the_module} PROPERTIES
+    OUTPUT_NAME "${the_module}${OPENCV_DLLVERSION}"
+    DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
+    ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}
+    RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}
+    INSTALL_NAME_DIR lib
+  )
+
+  if(BUILD_SHARED_LIBS)
+    if(MSVC)
+      set_target_properties(${the_module} PROPERTIES DEFINE_SYMBOL CVAPI_EXPORTS)
+    else()
+      add_definitions(-DCVAPI_EXPORTS)
+    endif()
+  endif()
+
+  if(MSVC)
+    if(CMAKE_CROSSCOMPILING)
+      set_target_properties(${the_module} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:secchk")
+    endif()
+    set_target_properties(${the_module} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:libc /DEBUG")
+  endif()
+
+  install(TARGETS ${the_module}
+    RUNTIME DESTINATION bin COMPONENT main
+    LIBRARY DESTINATION ${OPENCV_LIB_INSTALL_PATH} COMPONENT main
+    ARCHIVE DESTINATION ${OPENCV_LIB_INSTALL_PATH} COMPONENT main
+    )
+
+#   # only "public" headers need to be installed
+#   if(OPENCV_MODULE_${the_module}_HEADERS AND ";${OPENCV_MODULES_PUBLIC};" MATCHES ";${the_module};")
+#     foreach(hdr ${OPENCV_MODULE_${the_module}_HEADERS})
+#       string(REGEX REPLACE "^.*opencv2/" "opencv2/" hdr2 "${hdr}")
+#       if(hdr2 MATCHES "^(opencv2/.*)/[^/]+.h(..)?$")
+#         install(FILES ${hdr} DESTINATION "${OPENCV_INCLUDE_INSTALL_PATH}/${CMAKE_MATCH_1}" COMPONENT main)
+#       endif()
+#     endforeach()
+#   endif()
+
+
+#############################################################
 # set(NICE_CURR_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
 # ocv_glob_modules(${NICE_CURR_DIR})
-ocv_add_module(core)
+#ocv_add_module(core)
 
-ocv_module_include_directories()
-ocv_glob_module_sources()
-ocv_create_module()
+#ocv_module_include_directories()
+#ocv_glob_module_sources()
+#ocv_create_module()
 
 
 # set(NICE_CURR_DIR "${CMAKE_CURRENT_SOURCE_DIR}")

+ 0 - 0
core/algebra/CMakeLists.txt → core/algebra/CMakeLists.t.txt


+ 0 - 0
core/basics/CMakeLists.txt → core/basics/CMakeLists.t.txt


+ 281 - 0
core/corefiles.cmake

@@ -0,0 +1,281 @@
+# find . -name "*.cpp" -not -ipath "*tests*" -not -ipath "*progs*" > corefiles.cmake.t
+SET(NICE_CORE_SRC
+./image/DeprecatedConverter.cpp
+./image/Histogram.cpp
+./image/Fourier.cpp
+./image/GaussPyramid.cpp
+./image/ColorImageAccess.cpp
+./image/Convert.cpp
+./image/ImageOutputStream.cpp
+./image/Morph.cpp
+./image/ImageFileListWriter.cpp
+./image/ImageAccess.cpp
+./image/GrayColorImageCommonImplementation.cpp
+./image/FilterT.cpp
+./image/GHough.cpp
+./image/Algorithms.cpp
+./image/ImageT.cpp
+./image/Region.cpp
+./image/ImageFile.cpp
+./image/ImageFileListReader.cpp
+./image/MultiChannelImageT.cpp
+./image/ImageTools.cpp
+./image/ColorImageT.cpp
+./image/ImageInputStream.cpp
+./image/Filter.cpp
+./matlabAccess/MatFileIO.cpp
+# ./imagedisplay/DefaultMainWindow.cpp
+# ./imagedisplay/PolygonDrawer.cpp
+# ./imagedisplay/ArrayPlot.cpp
+# ./imagedisplay/CaptureDialog.cpp
+# ./imagedisplay/ImageDisplaySDL.cpp
+# ./imagedisplay/QtFramework.cpp
+# ./imagedisplay/CaptureWidget.cpp
+# ./imagedisplay/EpipolarGeometryDisplay.cpp
+# ./imagedisplay/ImageDisplayManager.cpp
+# ./imagedisplay/ImageDisplayManagerWidget.cpp
+# ./imagedisplay/SimpleSelector.cpp
+# ./imagedisplay/ImageDisplay.cpp
+./basics/bzstream.cpp
+./basics/tools.cpp
+./basics/BinStreamable.cpp
+./basics/FastMath.cpp
+./basics/ResourceStatistics.cpp
+./basics/Observer.cpp
+./basics/FileMgt.cpp
+./basics/gzstream.cpp
+./basics/Streamable.cpp
+./basics/Timer.cpp
+./basics/numerictools.cpp
+./basics/Exception.cpp
+./basics/Log.cpp
+./basics/FrameRateCounter.cpp
+./basics/StringTools.cpp
+./basics/Observable.cpp
+./basics/Config.cpp
+./basics/FileName.cpp
+./basics/stringutils.cpp
+./optimization/gradientBased/FirstOrderRasmussen.cpp
+./optimization/gradientBased/OptimizationProblemSecond.cpp
+./optimization/gradientBased/OptimizationProblemFirst.cpp
+./optimization/gradientBased/SecondOrderTrustRegion.cpp
+./optimization/gradientBased/OptimizationAlgorithmSecond.cpp
+./optimization/gradientBased/TrustRegionBase.cpp
+./optimization/gradientBased/OptimizationAlgorithmFirst.cpp
+./optimization/gradientBased/FirstOrderTrustRegion.cpp
+./optimization/blackbox/SimpleOptProblem.cpp
+./optimization/blackbox/CostFunction.cpp
+./optimization/blackbox/DownhillSimplexOptimizer.cpp
+./optimization/blackbox/SimpleOptimizer.cpp
+./optimization/blackbox/Optimizer.cpp
+./optimization/blackbox/DimWrapperCostFunction.cpp
+./optimization/blackbox/OptLogBase.cpp
+./optimization/blackbox/Optimizable.cpp
+./algebra/LUDecomposition.cpp
+./algebra/ILSPlainGradient.cpp
+./algebra/GenericMatrix.cpp
+./algebra/GBCDSolver.cpp
+./algebra/GMStandard.cpp
+./algebra/EigValuesTRLAN.cpp
+./algebra/EigValues.cpp
+./algebra/ILSSymmLqLanczos.cpp
+./algebra/CholeskyRobustAuto.cpp
+./algebra/GMSparseVectorMatrix.cpp
+./algebra/CholeskyRobust.cpp
+./algebra/ILSConjugateGradientsLanczos.cpp
+./algebra/IterativeLinearSolver.cpp
+./algebra/ILSConjugateGradients.cpp
+./algebra/ILSMinResLanczos.cpp
+./algebra/DiagonalMatrixApprox.cpp
+./vector/Distance.cpp
+./vector/VVector.cpp
+./vector/Algorithms.cpp
+./vector/ippwrapper.cpp
+)
+
+set(NICE_CORE_HDR
+./image/ColorImageT.h
+./image/ImageT.h
+./image/Region.h
+./image/GrayColorImageCommonImplementationT.h
+./image/MultiChannelImageAccess.h
+./image/ImageInputStream.h
+./image/CrossT.h
+./image/Morph.h
+./image/BlockImageAccessT.h
+./image/ColorImageChannelAccessT.h
+./image/RectT.h
+./image/ippwrapper.h
+./image/LineT.h
+./image/RectangleT.h
+./image/Drawable.h
+./image/GHough.h
+./image/DeprecatedConverter.h
+./image/ImageOperators.h
+./image/Pixel.h
+./image/ImageException.h
+./image/Fourier.h
+./image/PointT.h
+./image/CircleT.h
+./image/GaussPyramid.h
+./image/Histogram.h
+./image/ThreeChannelImageT.h
+./image/Filter.h
+./image/ImageTools.h
+./image/ImageFile.h
+./image/GrayColorImageCommonImplementation.h
+./image/ColorT.h
+./image/ImageFileListWriter.h
+./image/ImageFileListReader.h
+./image/pointerArithmetic.h
+./image/ImageOutputStream.h
+./image/ColorImageAccess.h
+./image/Algorithms.h
+./image/MultiChannelImageT.h
+./image/TekkotsuLink.h
+./image/ImageAccess.h
+./image/ImageAccessT.h
+./image/CoordT.h
+./image/Convert.h
+./image/Buffer.h
+./image/EllipseT.h
+./image/FilterT.h
+./matlabAccess/MatFileIO.h
+# ./imagedisplay/DefaultMainWindow.h
+# ./imagedisplay/ImageDisplay.h
+# ./imagedisplay/EpipolarGeometryDisplay.h
+# ./imagedisplay/OverlayColors.h
+# ./imagedisplay/CaptureWidget.h
+# ./imagedisplay/PolygonDrawer.h
+# ./imagedisplay/SimpleSelector.h
+# ./imagedisplay/CaptureDialog.h
+# ./imagedisplay/ImageDisplayManagerWidget.h
+# ./imagedisplay/QtFramework.h
+# ./imagedisplay/ImageDisplayManager.h
+# ./imagedisplay/ArrayPlot.h
+# ./imagedisplay/ImageDisplaySDL.h
+./basics/bzstream.h
+./basics/RoundToNearest.h
+./basics/FrameRateCounter.h
+./basics/all.h
+./basics/BFSColor.h
+./basics/binstream.h
+./basics/Observable.h
+./basics/CrossplatformDefines.h
+./basics/types.h
+./basics/Observer.h
+./basics/BinStreamable.h
+./basics/triplet.h
+./basics/deprecated.h
+./basics/gzbinstream.h
+./basics/Config.h
+./basics/stringutils.h
+./basics/StringTools.h
+./basics/cppunitex.h
+./basics/FileMgt.h
+./basics/ossettings.h
+./basics/gzstream.h
+./basics/StructuredMap.h
+./basics/ResourceStatistics.h
+./basics/quadruplet.h
+./basics/numerictools.h
+./basics/FileName.h
+./basics/FastMath.h
+./basics/Timer.h
+./basics/tools.h
+./basics/Log.h
+./basics/vectorio.h
+./basics/Persistent.h
+./basics/Exception.h
+./basics/NonCopyable.h
+./basics/Streamable.h
+./optimization/gradientBased/OptimizationAlgorithmFirst.h
+./optimization/gradientBased/SecondOrderTrustRegion.h
+./optimization/gradientBased/OptimizationProblemFirst.h
+./optimization/gradientBased/OptimizationAlgorithmSecond.h
+./optimization/gradientBased/OptimizationProblemSecond.h
+./optimization/gradientBased/FirstOrderRasmussen.h
+./optimization/gradientBased/TrustRegionBase.h
+./optimization/gradientBased/FirstOrderTrustRegion.h
+./optimization/blackbox/CostFunction.h
+./optimization/blackbox/SimpleOptimizer.h
+./optimization/blackbox/OptLogBase.h
+./optimization/blackbox/SimpleOptProblem.h
+./optimization/blackbox/Definitions_core_opt.h
+./optimization/blackbox/DimWrapperCostFunction.h
+./optimization/blackbox/Optimizable.h
+./optimization/blackbox/Optimizer.h
+./optimization/blackbox/DownhillSimplexOptimizer.h
+./iceconversion/image_convertice.h
+./iceconversion/convertice.h
+./algebra/DiagonalMatrixApprox.h
+./algebra/CholeskyRobust.h
+./algebra/ILSConjugateGradientsLanczos.h
+./algebra/GMStandard.h
+./algebra/GenericMatrix.h
+./algebra/GBCDSolver.h
+./algebra/ILSMinResLanczos.h
+./algebra/ILSPlainGradient.h
+./algebra/ILSSymmLqLanczos.h
+./algebra/CholeskyRobustAuto.h
+./algebra/EigValuesTRLAN.h
+./algebra/MatrixDecomposition.h
+./algebra/PartialGenericMatrix.h
+./algebra/LUDecomposition.h
+./algebra/GMSparseVectorMatrix.h
+./algebra/ILSConjugateGradients.h
+./algebra/EigValues.h
+./algebra/IterativeLinearSolver.h
+./vector/CheckedVectorT.h
+./vector/Operators.h
+./vector/Distance.h
+./vector/MatrixBase.h
+./vector/Eigen.h
+./vector/VectorBase.h
+./vector/ippwrapper.h
+./vector/SparseVectorT.h
+./vector/cppunitex.h
+./vector/VectorT.h
+./vector/SVD.h
+./vector/Algorithms.h
+./vector/CheckedMatrixT.h
+./vector/VVector.h
+./vector/config.h
+./vector/SparseVector.h
+./vector/CheckedRowMatrixT.h
+./vector/MatrixT.h
+./vector/RowMatrixT.h
+./image/CircleT.tcc
+./image/ImageAccessT.tcc
+./image/ippwrapper.tcc
+./image/LineT.tcc
+./image/Filter.tcc
+./image/RectT.tcc
+./image/ColorImageT.tcc
+./image/GrayColorImageCommonImplementationT.tcc
+./image/Buffer.tcc
+./image/MultiChannelImageT.tcc
+./image/DeprecatedConverter.tcc
+./image/FilterT.tcc
+./image/EllipseT.tcc
+./image/ImageT.tcc
+./image/ImageFile.tcc
+./image/Pixel.tcc
+./image/RectangleT.tcc
+./image/PointT.tcc
+./image/CrossT.tcc
+./image/BlockImageAccessT.tcc
+./image/Convert.tcc
+./image/Morph.tcc
+./image/ColorT.tcc
+./image/ImageTools.tcc
+./basics/vectorio.tcc
+./vector/ippwrapper.tcc
+./vector/RowMatrixT.tcc
+./vector/VectorT.tcc
+./vector/Distance.tcc
+./vector/Algorithms.tcc
+./vector/Eigen.tcc
+./vector/SparseVectorT.tcc
+./vector/MatrixT.tcc
+)

+ 0 - 0
core/image/CMakeLists.txt → core/image/CMakeLists.t.txt


+ 1 - 1
core/image/ImageFileListReader.cpp

@@ -24,7 +24,7 @@ void ImageFileListReader::init(const std::string& fileName, bool _preload) {
     inputFileName = FileName(inputFileName.str() + lastPart.str() + ".txt");
   }
 
-  std::ifstream file( inputFileName.str() );
+  std::ifstream file( inputFileName.str().c_str() );
   if (!file.good()) {
     fthrow(ImageException,
            std::string("ImageFileListReader: Error opening filelist: ")

+ 0 - 0
core/matlabAccess/CMakeLists.txt → core/matlabAccess/CMakeLists.t.txt


+ 0 - 0
core/optimization/CMakeLists.txt → core/optimization/CMakeLists.t.txt


+ 0 - 7
core/optimization/CMakeLists.txt.old

@@ -1,7 +0,0 @@
-
-INCLUDE_DIRECTORIES(blackbox)
-INCLUDE_DIRECTORIES(gradientBased)
-
-ADD_SUBDIRECTORY(blackbox)
-ADD_SUBDIRECTORY(gradientBased)
-

+ 22 - 0
core/progfiles.cmake

@@ -0,0 +1,22 @@
+# find . -name "*.cpp" -ipath "*progs*" > progfiles.cmake.t
+set(NICE_PROGFILES_SRC 
+./image/progs/compareImages.cpp
+./image/progs/convertImageNice.cpp
+./image/progs/testApproxGaussFilter.cpp
+./image/progs/testGenericSobelFilter.cpp
+./matlabAccess/progs/testMatFileIO.cpp
+./progs/imageDemo.cpp
+./imagedisplay/progs/showImage.cpp
+./basics/progs/testConfig.cpp
+./basics/progs/testMemoryUsage.cpp
+./algebra/progs/testILSMinResLanczos.cpp
+./algebra/progs/testILSConjugateGradients.cpp
+./algebra/progs/testILSmethods.cpp
+./algebra/progs/testILSSymmLqLanczos.cpp
+./algebra/progs/testILSConjugateGradientsLanczos.cpp
+./vector/progs/testMatrixFunctions.cpp
+./vector/progs/testCholeskySpeed.cpp
+)
+
+set(NICE_PROGFILES_HDR
+)

+ 80 - 0
core/testfiles.cmake

@@ -0,0 +1,80 @@
+#generated by find . -name "*.cpp" -ipath "*tests*" > testfiles.cmake.t 
+SET(NICE_TESTFILES_SRC 
+./image/tests/ImageTest.cpp
+./image/tests/TestImageFile.cpp
+./image/tests/TestRect.cpp
+./image/tests/TestImageFileList.cpp
+./image/tests/TestConvert.cpp
+./image/tests/TestImageOperators.cpp
+./image/tests/TestImageTools.cpp
+./image/tests/TestFilter.cpp
+./image/tests/TestConverter.cpp
+./image/tests/TestHistogram.cpp
+./image/tests/TestMorph.cpp
+./image/tests/TestDrawable.cpp
+./image/tests/TestColor.cpp
+./image/tests/MultiChannelImageTTest.cpp
+./image/tests/TestFourier.cpp
+./basics/tests/cppunitexTest.cpp
+./basics/tests/FileNameTest.cpp
+./basics/tests/Testcasts.cpp
+./basics/tests/TestObserver.cpp
+./basics/tests/numerictoolsTest.cpp
+./basics/tests/TimerTest.cpp
+./basics/tests/stringutilsTest.cpp
+./basics/tests/Testgzbinstream.cpp
+./basics/tests/Testbinstream.cpp
+./optimization/gradientBased/tests/TestTrustRegion.cpp
+./optimization/blackbox/tests/TestDownhillSimplex.cpp
+./algebra/tests/TestLUDecomposition.cpp
+./algebra/tests/TestLinearSolve.cpp
+./algebra/tests/TestDiagApprox.cpp
+./algebra/tests/TestEigenValue.cpp
+./vector/tests/TestSparseVector.cpp
+./vector/tests/TestEVector.cpp
+./vector/tests/TestDistance.cpp
+./vector/tests/TestAlgorithms.cpp
+./vector/tests/TestStreamable.cpp
+./vector/tests/TestERowMatrix.cpp
+./vector/tests/TestEMatrix.cpp
+)
+
+SET(NICE_TESTFILES_HDR
+./image/tests/TestRect.h
+./image/tests/ImageTest.h
+./image/tests/TestMorph.h
+./image/tests/TestImageTools.h
+./image/tests/TestConvert.h
+./image/tests/MultiChannelImageTTest.h
+./image/tests/TestFourier.h
+./image/tests/TestImageOperators.h
+./image/tests/TestColor.h
+./image/tests/TestHistogram.h
+./image/tests/TestDrawable.h
+./image/tests/TestConverter.h
+./image/tests/TestFilter.h
+./image/tests/TestImageFileList.h
+./image/tests/TestImageFile.h
+./basics/tests/TimerTest.h
+./basics/tests/Testcasts.h
+./basics/tests/numerictoolsTest.h
+./basics/tests/Testbinstream.h
+./basics/tests/cppunitexTest.h
+./basics/tests/Testgzbinstream.h
+./basics/tests/FileNameTest.h
+./basics/tests/stringutilsTest.h
+./basics/tests/TestObserver.h
+./optimization/gradientBased/tests/TestTrustRegion.h
+./optimization/blackbox/tests/TestDownhillSimplex.h
+./algebra/tests/TestDiagApprox.h
+./algebra/tests/TestLUDecomposition.h
+./algebra/tests/TestEigenValue.h
+./algebra/tests/TestLinearSolve.h
+./vector/tests/TestStreamable.h
+./vector/tests/TestERowMatrix.h
+./vector/tests/TestEMatrix.h
+./vector/tests/TestAlgorithms.h
+./vector/tests/TestEVector.h
+./vector/tests/TestDistance.h
+./vector/tests/TestSparseVector.h
+)

+ 0 - 0
core/vector/CMakeLists.txt → core/vector/CMakeLists.t.txt


+ 6 - 0
readme.txt

@@ -1,5 +1,11 @@
 notes on porting NICE to WIN using CMAKE:
 -------
+
+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.
+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).
+
+
+
 fixing all these includes of template definitons:
 //#ifdef __GNUC__
 #include "core/vector/RowMatrixT.tcc"