MACRO(ADD_EXTRA_MODULES dir) SET( MODULE_LOCATION "${dir}/" ) ADD_SUBDIRECTORY( ${dir} ${CMAKE_CURRENT_BINARY_DIR}/extra-modules ) INCLUDE_DIRECTORIES( ${dir} ) SET( MODULE_LOCATION "${dir}/" PARENT_SCOPE ) ENDMACRO() 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 Calyp_Mod_SRCS ${MODULE_LOCATION}${file} ) LIST(APPEND MODULES_LIST_NAME ${name} ) LIST(APPEND MODULES_LIST_FILES ${file} ) SET( Calyp_Mod_SRCS "${Calyp_Mod_SRCS}" PARENT_SCOPE ) SET( MODULES_LIST_NAME "${MODULES_LIST_NAME}" PARENT_SCOPE ) SET( MODULES_LIST_FILES "${MODULES_LIST_FILES}" PARENT_SCOPE ) ENDIF() UNSET(__modulename) ENDMACRO() MACRO(ADD_MODULE_USE_OPENCV name file ) IF( USE_OPENCV ) SET( ADD_MODULE_USE_OPENCV_VERSION "2.4" ) CMAKE_PARSE_ARGUMENTS(ADD_MODULE_USE_OPENCV "" "VERSION" "MODULES" ${ARGN} ) IF( NOT ( ${OpenCV_VERSION} VERSION_LESS ${ADD_MODULE_USE_OPENCV_VERSION} ) ) SET( _HAS_MODULES TRUE ) FOREACH(opencv_module IN LISTS ADD_MODULE_USE_OPENCV_MODULES ) string(TOUPPER "${opencv_module}" opencv_moduleUP) FIND_PACKAGE( OpenCV QUIET COMPONENTS ${opencv_module} ) IF( NOT ${OPENCV_${opencv_moduleUP}_FOUND} EQUAL "1" ) SET( _HAS_MODULES FALSE ) ELSE() LIST(APPEND OPENCV_MODULES ${opencv_module} ) ENDIF() ENDFOREACH() IF( _HAS_MODULES ) ADD_MODULE( ${name} ${file} ) ENDIF() UNSET( OPENCV_${opencv_moduleUP}_FOUND ) UNSET( _HAS_MODULES ) ENDIF() UNSET( ADD_MODULE_USE_OPENCV_VERSION ) 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()