diff --git a/CMakeLists.txt b/CMakeLists.txt index dab6c1b..6620773 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,6 +116,7 @@ IF( WIN32 ) SET( USE_STATIC ON ) INCLUDE( cmake/Win32.cmake ) ENDIF() +INCLUDE( cmake/ModulesFct.cmake ) ###################################################################################### # Configure targets diff --git a/cmake/ModulesFct.cmake b/cmake/ModulesFct.cmake new file mode 100644 index 0000000..cc99ac5 --- /dev/null +++ b/cmake/ModulesFct.cmake @@ -0,0 +1,45 @@ + + +MACRO(ADD_MODULE name file ) + set(__modulename "Module${name}") + OPTION(MODULE_${name} "Use module ${name}" ON ) + ADD_FEATURE_INFO(${name} MODULE_${name} "Module ${name}" ) + if( MODULE_${name} ) + list(APPEND plaYUver_Mod_SRCS ${file} ) + LIST(APPEND MODULES_LIST_NAME ${name} ) + LIST(APPEND MODULES_LIST_FILES ${file} ) + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "#include \"${file}.h\"\n") + endif() + unset(__modulename) +ENDMACRO() + + +MACRO(ADD_MODULE_OPENCV name file version ) + IF( ${OpenCV_FOUND} AND ( NOT ( ${OpenCV_VERSION} VERSION_LESS ${version} ) ) ) + ADD_MODULE( ${name} ${file} ) + ENDIF() +ENDMACRO() + + +# +# Create header +# + +MACRO(CREATE_MODULE_MACROS ) + + file( WRITE ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "// This files add the header files of each module\n" + + "#ifndef __MODULESLISTHEADER_H__\n#define __MODULESLISTHEADER_H__\n" ) + + foreach(module ${MODULES_LIST_FILES}) + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "#include \"${module}.h\"\n") + endforeach(module ${MODULES_LIST_FILES}) + + file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "#define REGISTER_ALL_MODULES \\\n" ) + foreach(module ${MODULES_LIST_NAME}) + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "Register( \"${module}\", &(${module}::Create) ); \\\n") + endforeach(module ${MODULES_LIST_NAME}) + + file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "\n#endif // __MODULESLISTHEADER_H__\n" ) + +ENDMACRO() diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index 4349c19..55d5f82 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -10,20 +10,6 @@ set(plaYUver_Mod_SRCS PlaYUVerModuleFactory.cpp ) -MACRO(ADD_MODULE name file ) - set(__modulename "Module${name}") - OPTION(MODULE_${name} "Use module ${name}" ON ) - ADD_FEATURE_INFO(${name} MODULE_${name} "Module ${name}" ) - if( MODULE_${name} ) - list(APPEND plaYUver_Mod_SRCS ${file} ) - LIST(APPEND MODULES_LIST_NAME ${name} ) - LIST(APPEND MODULES_LIST_FILES ${file} ) - file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "#include \"${file}.h\"\n") - endif() - unset(__modulename) -ENDMACRO() - - # # Modules List # @@ -40,35 +26,19 @@ ADD_MODULE( EightBitsSampling "EightBitsSampling" ) ADD_MODULE( FrameCrop "FrameCrop" ) ADD_MODULE( LumaAverage "LumaAverage" ) ADD_MODULE( WeightedPSNR "WeightedPSNR" ) -IF( OpenCV_FOUND ) - IF( OPENCV_OPTFLOW_FOUND ) - ADD_MODULE( OpticalFlowDualTVL1 "OpticalFlow" ) - ADD_MODULE( OpticalFlowSparseToDense "OpticalFlow" ) - ADD_MODULE( OpticalFlowFarneback "OpticalFlow" ) - ELSE() - ADD_MODULE( OpticalFlowDualTVL1 "OpticalFlowDualTVL1" ) - ENDIF() - ADD_MODULE( DisparityStereoBM "DisparityStereoBM" ) - ADD_MODULE( DisparityStereoSGBM "DisparityStereoSGBM" ) - #ADD_MODULE( DisparityStereoVar "DisparityStereoVar" ) +IF( OPENCV_OPTFLOW_FOUND ) + ADD_MODULE_OPENCV( OpticalFlowDualTVL1 "OpticalFlow" 3.1.0 ) + ADD_MODULE_OPENCV( OpticalFlowSparseToDense "OpticalFlow" 3.1.0 ) + ADD_MODULE_OPENCV( OpticalFlowFarneback "OpticalFlow" 3.1.0 ) +ELSE() + ADD_MODULE_OPENCV( OpticalFlowDualTVL1 "OpticalFlowDualTVL1" 2.4.13.0 ) ENDIF() +ADD_MODULE_OPENCV( DisparityStereoBM "DisparityStereoBM" 2.4.8 ) +ADD_MODULE_OPENCV( DisparityStereoSGBM "DisparityStereoSGBM" 2.4.8 ) +# ADD_MODULE_OPENCV( DisparityStereoVar "DisparityStereoVar" ) -# -# Create header -# -file( WRITE ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "// This files add the header files of each module\n" - - "#ifndef __MODULESLISTHEADER_H__\n#define __MODULESLISTHEADER_H__\n" ) -foreach(module ${MODULES_LIST_FILES}) - file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "#include \"${module}.h\"\n") -endforeach(module ${MODULES_LIST_FILES}) -file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "#define REGISTER_ALL_MODULES \\\n" ) -foreach(module ${MODULES_LIST_NAME}) - file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "Register( \"${module}\", &(${module}::Create) ); \\\n") -endforeach(module ${MODULES_LIST_NAME}) -file( APPEND ${CMAKE_CURRENT_BINARY_DIR}/ModulesListHeader.h "\n#endif // __MODULESLISTHEADER_H__\n" ) - +CREATE_MODULE_MACROS() INCLUDE_DIRECTORIES( ${OpenCV_INCLUDE_DIRS} ) ADD_LIBRARY( PlaYUVerModules ${plaYUver_Mod_SRCS} ) TARGET_LINK_LIBRARIES( PlaYUVerModules PlaYUVerLib ${OpenCV_LIBRARIES} -ldl )