'BUILD_Inspector' CMake option switches ON/OFF Inspector in compilation procedure (add additional dependency to Qt third party product)
'inspector.bat' starts sample to demonstrate possibilities of this tool.
Replacing TOOLS to INSPECTOR key for 'pload' command in DRAW cases due to this change in DrawPlugin.
set (BUILD_MODULE_MfcSamples OFF CACHE BOOL "${BUILD_MODULE_MfcSamples_DESCR}")
endif()
+set (BUILD_Inspector OFF CACHE BOOL "${BUILD_Inspector_DESCR}")
+
# uwp sample
if (MSVC)
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
set (USE_D3D OFF CACHE BOOL "${USE_D3D_DESCR}")
endif()
-set (USE_QT_TOOLS OFF CACHE BOOL "${USE_QT_TOOLS_DESCR}")
-set (USE_QT4 ON CACHE BOOL "${USE_QT4}")
-
# Enable/Disable the floating point exceptions (FPE) during runtime.
if (NOT BUILD_ENABLE_FPE_SIGNAL_HANDLER)
set (BUILD_ENABLE_FPE_SIGNAL_HANDLER OFF CACHE BOOL "${BUILD_ENABLE_FPE_SIGNAL_HANDLER_DESCR}" FORCE)
# include the patched or original list of tools
# list <TOOLNAME>_TOOLKITS is created foreach tool and contains its toolkits
# list <OCCT_TOOLS> will contain all tools
-if (NOT USE_QT_TOOLS)
+if (NOT BUILD_Inspector)
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_QT")
OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_TQTMALLOC")
OCCT_CHECK_AND_UNSET ("INSTALL_QT")
# check qt 3rdparty path
add_definitions (-DHAVE_QT)
- OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt5")
+ OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt")
message (STATUS "Info: Qt is used by OCCT")
endif()
if (BUILD_TOOL_TOOLKITS)
# copy tinspector script to install script folder
- if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/adm/templates/dfbrowser.${SCRIPT_EXT}")
- install (FILES "${BUILD_PATCH}/adm/templates/dfbrowser.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
+ if (BUILD_PATCH AND EXISTS "${BUILD_PATCH}/adm/templates/inspector.${SCRIPT_EXT}")
+ install (FILES "${BUILD_PATCH}/adm/templates/inspector.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
else()
- install (FILES "${CMAKE_SOURCE_DIR}/adm/templates/dfbrowser.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
+ install (FILES "${CMAKE_SOURCE_DIR}/adm/templates/inspector.${SCRIPT_EXT}" DESTINATION "${INSTALL_DIR_SCRIPT}"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
endif()
foreach (BUILD_SAMPLE_TOOL_TOOLKIT ${BUILD_SAMPLE_TOOLKITS})
OCCT_ADD_SUBDIRECTORY ("samples/tools/${BUILD_SAMPLE_TOOL_TOOLKIT}")
endforeach()
+
+ # patch TInspectorEXE
+ OCCT_CONFIGURE ("adm/templates/TInspectorEXE.vcxproj.user.in" "${CMAKE_BINARY_DIR}/samples/tools/TInspectorEXE/TInspectorEXE.vcxproj.user")
endif()
# Prepare variables for configuration of OpenCASCADE cmake config file
foreach (SUBDIR_NAME ${SUBDIR_NAME_LIST})
#message("Subdir: ${SUBDIR_NAME}, ${DIRECTORY_SUFFIX}")
# REGEX failed if the directory name contains '++' combination, so we replace it
- string(REPLACE "++" "\\+\\+" SUBDIR_NAME_ESCAPED ${SUBDIR_NAME})
+ string(REPLACE "+" "\\+" SUBDIR_NAME_ESCAPED ${SUBDIR_NAME})
string (REGEX MATCH "${SUBDIR_NAME_ESCAPED}" DOES_PATH_CONTAIN "${DIRECTORY_SUFFIX}")
if (DOES_PATH_CONTAIN)
set(${SUBDIRECTORY_NAME} "${ROOT_DIRECTORY}/${SUBDIR_NAME}" PARENT_SCOPE)
# script for each OCCT tool toolkit
# Qt dependencies
-OCCT_INCLUDE_CMAKE_FILE (adm/cmake/qt5_macro)
+OCCT_INCLUDE_CMAKE_FILE (adm/cmake/qt_macro)
-FIND_QT5_PACKAGE(PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
+FIND_QT_PACKAGE(PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
include_directories("${PROJECT_INCLUDES}"
"${CMAKE_BINARY_DIR}/${INSTALL_DIR_INCLUDE}/tools")
--- /dev/null
+#qt
+
+#looking for 3RDPARTY_QT_DIR variable used later in qt_macro.cmake
+SET(CSF_QtCore "QtCore")
+THIRDPARTY_PRODUCT("QT" "" "CSF_QtCore" "d")
+
+list (APPEND 3RDPARTY_DLL_DIRS "${3RDPARTY_QT_DIR}/bin")
+
+list (REMOVE_ITEM 3RDPARTY_NOT_INCLUDED "3RDPARTY_QT_INCLUDE_DIR")
+list (REMOVE_ITEM 3RDPARTY_NOT_INCLUDED "3RDPARTY_QT_LIBRARY_DIR")
+list (REMOVE_ITEM 3RDPARTY_NOT_INCLUDED "3RDPARTY_QT_DLL_DIR")
+
+UNSET (${3RDPARTY_QT_DLL} CACHE)
+UNSET (${3RDPARTY_QT_DLL_DIR} CACHE)
+UNSET (${3RDPARTY_QT_INCLUDE_DIR} CACHE)
+UNSET (${3RDPARTY_QT_LIBRARY} CACHE)
+UNSET (${3RDPARTY_QT_LIBRARY_DIR} CACHE)
+
+set (USED_3RDPARTY_QT_DIR "${3RDPARTY_QT_DIR}")
+message (STATUS "Info: Qt is used from folder: ${3RDPARTY_QT_DIR}")
+++ /dev/null
-#qt
-
-#looking for 3RDPARTY_QT_DIR variable used later in qt5_macro.cmake
-if (${USE_QT4})
- SET(CSF_QtCore "QtCore")
- THIRDPARTY_PRODUCT("QT" "" "CSF_QtCore" "d")
-else()
- SET(CSF_Qt5Core "Qt5Core")
- THIRDPARTY_PRODUCT("QT" "" "CSF_Qt5Core" "d")
-endif()
-
-list (REMOVE_ITEM 3RDPARTY_NOT_INCLUDED "3RDPARTY_QT_INCLUDE_DIR")
-list (REMOVE_ITEM 3RDPARTY_NOT_INCLUDED "3RDPARTY_QT_LIBRARY_DIR")
-list (REMOVE_ITEM 3RDPARTY_NOT_INCLUDED "3RDPARTY_QT_DLL_DIR")
-
-UNSET (${3RDPARTY_QT_DLL} CACHE)
-UNSET (${3RDPARTY_QT_DLL_DIR} CACHE)
-UNSET (${3RDPARTY_QT_INCLUDE_DIR} CACHE)
-UNSET (${3RDPARTY_QT_LIBRARY} CACHE)
-UNSET (${3RDPARTY_QT_LIBRARY_DIR} CACHE)
-
-set (USED_3RDPARTY_QT_DIR "${3RDPARTY_QT_DIR}")
+++ /dev/null
-#qt
-
-macro (FIND_QT5_PACKAGE PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
-
- if ("${3RDPARTY_QT_DIR}" STREQUAL "")
- message (FATAL_ERROR "Empty Qt dir")
- endif()
-
- # Now set CMAKE_PREFIX_PATH to point to local Qt installation.
- # Without this setting find_package() will not work
- set(CMAKE_PREFIX_PATH ${3RDPARTY_QT_DIR})
- if (USE_QT4)
- # Now we can apply standard CMake finder for Qt. We do this mostly
- # to have qt5_wrap_cpp() function available
- find_package(Qt4)
- #message (STATUS "Qt cmake configuration at directory ${Qt4DIR}")
-
- set(PROJECT_INCLUDES ${QT_INCLUDES})
- if (WIN32)
- set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/QtCored4.lib;${3RDPARTY_QT_DIR}/lib/QtGuid4.lib")
- set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/QtCore4.lib;${3RDPARTY_QT_DIR}/lib/QtGui4.lib")
- else()
- set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so")
- set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so")
- endif(WIN32)
- else()
- # Now we can apply standard CMake finder for Qt4. We do this mostly
- # to have qt5_wrap_cpp() function available
- find_package(Qt5 REQUIRED COMPONENTS Widgets)
- #message (STATUS "Qt cmake configuration at directory ${Qt5DIR}")
-
- set(PROJECT_INCLUDES "${Qt5Widgets_INCLUDE_DIRS}")
- set(PROJECT_LIBRARIES_DEBUG "${Qt5Widgets_LIBRARIES}")
- set(PROJECT_LIBRARIES_RELEASE "${Qt5Widgets_LIBRARIES}")
- endif()
-endmacro()
-
-
-macro (FIND_AND_WRAP_MOC_FILES SOURCE_FILES)
- SET(CMAKE_AUTOMOC ON)
-
- foreach (FILE ${SOURCE_FILES})
- set (src_files ${src_files} ${FILE})
- unset (MOC_FILE)
- if (USE_QT4)
- qt4_wrap_cpp(MOC_FILE ${FILE})
- else()
- qt5_wrap_cpp(MOC_FILE ${FILE})
- endif()
- #message (STATUS "... Info: next MOC file ${MOC_FILE}")
-
- endforeach (FILE)
-
-endmacro()
-
-macro (FIND_AND_WRAP_RESOURCE_FILE RESOURCE_FILE_NAME RCC_FILES)
- if(EXISTS "${RESOURCE_FILE_NAME}")
- if (USE_QT4)
- qt4_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}")
- # suppress some GCC warnings coming from source files generated from .qrc resources
- if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable")
- endif()
- else()
- qt5_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}")
- endif()
- endif()
-endmacro()
--- /dev/null
+#qt
+
+macro (FIND_QT_PACKAGE PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
+
+ if ("${3RDPARTY_QT_DIR}" STREQUAL "")
+ message (FATAL_ERROR "Empty Qt dir")
+ endif()
+
+ # Now set CMAKE_PREFIX_PATH to point to local Qt installation.
+ # Without this setting find_package() will not work
+ set(CMAKE_PREFIX_PATH ${3RDPARTY_QT_DIR})
+
+ # Now we can apply standard CMake finder for Qt5. We do this mostly
+ # to have qt5_wrap_cpp() function available
+ find_package(Qt5 QUIET COMPONENTS Widgets PATHS ${3RDPARTY_QT_DIR} NO_DEFAULT_PATH)
+ if (${Qt5_FOUND})
+ #message (STATUS "Qt5 cmake configuration")
+
+ set(PROJECT_INCLUDES "${Qt5Widgets_INCLUDE_DIRS}")
+ set(PROJECT_LIBRARIES_DEBUG "${Qt5Widgets_LIBRARIES}")
+ set(PROJECT_LIBRARIES_RELEASE "${Qt5Widgets_LIBRARIES}")
+ else()
+ # Now we can apply standard CMake finder for Qt. We do this mostly
+ # to have qt4_wrap_cpp() function available
+ find_package(Qt4)
+
+ #message (STATUS "Qt4 cmake configuration")
+ set(PROJECT_INCLUDES ${QT_INCLUDES})
+ if (WIN32)
+ set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/QtCored4.lib;${3RDPARTY_QT_DIR}/lib/QtGuid4.lib")
+ set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/QtCore4.lib;${3RDPARTY_QT_DIR}/lib/QtGui4.lib")
+ else()
+ set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so")
+ set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so")
+ endif(WIN32)
+ endif()
+endmacro()
+
+
+macro (FIND_AND_WRAP_MOC_FILES SOURCE_FILES)
+
+ SET(CMAKE_AUTOMOC ON)
+
+ foreach (FILE ${SOURCE_FILES})
+ set (src_files ${src_files} ${FILE})
+ unset (MOC_FILE)
+ if (${Qt5_FOUND})
+ qt5_wrap_cpp(MOC_FILE ${FILE})
+ else()
+ qt4_wrap_cpp(MOC_FILE ${FILE})
+ endif()
+ #message (STATUS "... Info: next MOC file ${MOC_FILE}")
+
+ endforeach (FILE)
+
+endmacro()
+
+macro (FIND_AND_WRAP_RESOURCE_FILE RESOURCE_FILE_NAME RCC_FILES)
+ if(EXISTS "${RESOURCE_FILE_NAME}")
+ if (${Qt5_FOUND})
+ qt5_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}")
+ else()
+ qt4_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}")
+ # suppress some GCC warnings coming from source files generated from .qrc resources
+ if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable")
+ endif()
+ endif()
+ endif()
+endmacro()
These samples show some possibilities of using OCCT and they can be executed
with script samples.bat from the installation directory (INSTALL_DIR)")
+set (BUILD_Inspector_DESCR
+"Indicates whether OCCT inspector should be built together with OCCT.
+This inspector provides functionality to interactively inspect low-level content
+of the OCAF data model, OCCT viewer, etc. have been introduced in OCCT.
+It can be executed with script inspector.bat from the installation directory (INSTALL_DIR) or
+using 'tinspector' command in DRAW interpretator")
+
set (BUILD_MODULE_UwpSample_DESCR
"Indicates whether OCCT UWP sample should be built together with OCCT.")
set (USE_D3D_DESCR "Indicates whether optional Direct3D wrapper in OCCT visualization module should be build or not")
-set (BUILD_QT_TOOLS_DESCR "Indicates whether OCCT tools should be build or not")
-
-set (USE_QT_TOOLS_DESCR "Indicates whether OCCT tools should be used or not
-The tools will be searched in third-party directory or may be set manually")
-
macro (BUILD_MODULE MODULE_NAME)
set (ENABLE_MODULE TRUE)
set (BUILD_MODULE_${MODULE_NAME} ${ENABLE_MODULE} CACHE BOOL "${BUILD_MODULE_${MODULE_NAME}_DESCR}")
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@X_COMPILER_BITNESS@'">
+ <LocalDebuggerEnvironment>CASROOT=@CMAKE_SOURCE_DIR@
+CSF_OCCTDataPath=@CMAKE_SOURCE_DIR@/data
+QTDIR=@3RDPARTY_QT_DIR@
+PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;%PATH%
+ </LocalDebuggerEnvironment>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ <LocalDebuggerWorkingDirectory>@CMAKE_BINARY_DIR@</LocalDebuggerWorkingDirectory>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|@X_COMPILER_BITNESS@'">
+ <LocalDebuggerEnvironment>CASROOT=@CMAKE_SOURCE_DIR@
+CSF_OCCTDataPath=@CMAKE_SOURCE_DIR@/data
+QTDIR=@3RDPARTY_QT_DIR@
+PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;%PATH%
+ </LocalDebuggerEnvironment>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ <LocalDebuggerWorkingDirectory>@CMAKE_BINARY_DIR@</LocalDebuggerWorkingDirectory>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@X_COMPILER_BITNESS@'">
+ <LocalDebuggerEnvironment>CASROOT=@CMAKE_SOURCE_DIR@
+CSF_OCCTDataPath=@CMAKE_SOURCE_DIR@/data
+QTDIR=@3RDPARTY_QT_DIR@
+PATH=@3RDPARTY_DLL_DIRS_FOR_PATH@;%PATH%
+ </LocalDebuggerEnvironment>
+ <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+ <LocalDebuggerWorkingDirectory>@CMAKE_BINARY_DIR@</LocalDebuggerWorkingDirectory>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
+++ /dev/null
-@echo off
-
-rem Setup environment and launch TInspector
-call "%~dp0env.bat" %1 %2 %3
-
-TInspectorEXE.exe --dfbrowser
-
+++ /dev/null
-#!/bin/bash
-
-aCurrentPath="$PWD"
-aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD";
-
-source "${aScriptPath}/env.sh" "$1"
-
-cd ${aCurrentPath}
-TInspectorEXE --dfbrowser
--- /dev/null
+@echo off
+
+rem Use:
+rem - first argument specifies version of Visual Studio (vc8, vc9, or vc10),
+rem - second argument specifies architecture (win32 or win64),
+rem - third argument specifies build mode (Debug or Release)
+rem - fourth and next arguments specify loaded tool plugins
+rem The arguments are: dfbrowser shapeview vinspector
+rem If there are no tool plugins are specified, all plugins will be loaded
+rem Default options are:
+rem vc8 win32 Release
+
+rem Setup environment and launch TInspector
+call "%~dp0env.bat" %1 %2 %3
+
+TInspectorEXE.exe %*
+
--- /dev/null
+#!/bin/bash
+
+aCurrentPath="$PWD"
+aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}" ]; then cd "$aScriptPath"; fi; aScriptPath="$PWD";
+
+source "${aScriptPath}/env.sh" "$1"
+
+cd ${aCurrentPath}
+TInspectorEXE
std::set<TCollection_AsciiString> aPlugins;
for (int anArgId = 1; anArgId < argc; anArgId++ )
{
- if (!strcmp (argv[anArgId], "--dfbrowser"))
+ if (!strcmp (argv[anArgId], "dfbrowser"))
aPlugins.insert ("TKDFBrowser");
- if (!strcmp (argv[anArgId], "--shapeview"))
+ if (!strcmp (argv[anArgId], "shapeview"))
aPlugins.insert ("TKShapeView");
- if (!strcmp (argv[anArgId], "--vinspector"))
+ if (!strcmp (argv[anArgId], "vinspector"))
aPlugins.insert ("TKVInspector");
}
NCollection_List<Handle(Standard_Transient)> aParameters;
set (3RDPARTY_DIR "" CACHE PATH "Third party dir" )
set (INSTALL_DIR "" CACHE PATH "Where to install" )
-set (USE_QT4 ON CACHE BOOL "${USE_QT4}")
-
if (NOT "$ENV{CASROOT}" STREQUAL "" AND EXISTS "$ENV{CASROOT}")
set (CASROOT "$ENV{CASROOT}")
#set (3RDPARTY_OCCT_DIR "${CASROOT}")
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/freeimage")
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/gl2ps")
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/tbb")
-OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt5")
+OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt")
OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/occt_macros")
#include (${CMAKE_SOURCE_DIR}/adm/cmake/3rdparty.cmake)
COLLECT_AND_INSTALL_OCCT_HEADER_FILES ("${CMAKE_BINARY_DIR}" "${BUILD_TOOLKITS}" "${CASROOT_SOURCE_FILES}/tools" "${INSTALL_DIR_INCLUDE}")
OCCT_INCLUDE_CMAKE_FILE_STANDALONE ("adm/cmake/standalone_macros")
-OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt5_macro")
+OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/qt_macro")
set (BUILD_PROJECTS
TInspectorAPI
unset(RCC_FILES)
if (USE_QT)
- FIND_QT5_PACKAGE(PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
+ FIND_QT_PACKAGE(PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
FIND_AND_WRAP_MOC_FILES("${SOURCE_FILES}")
FIND_AND_WRAP_RESOURCE_FILE("${SOURCE_DIR}/${PROJECT_NAME}.qrc" RCC_FILES)
DFBROWSER : TKDFBrowser
QAcommands : TKQADraw
VIS : TKIVtkDraw
-TOOLS : TKToolsDraw
+INSPECTOR : TKToolsDraw
pload DCAF
-pload TOOLS
+pload INSPECTOR
NewDocument Doc BinOcaf
pload DCAF
pload VISUALIZATION
-pload TOOLS
+pload INSPECTOR
chrono qat start
# Create a new document and set UndoLimit