I am developing a "Qt Plugin" that uses OpenMP (OpenMP support can be enabled / disabled using the CMake parameter). I use MinGW and CMake as a development environment. Here's how I enable / disable OpenMP in code:
#ifdef OPENMP_ENABLE
#pragma omp parallel for
#endif for(int i=0; i<volumeData->getZSize(); i++){ .
I included OpenMP in the CMake file as follows:
OPTION (OPENMP_SUPPORT "Build with OpenMP parallaization enabled")
IF (OPENMP_SUPPORT)
FIND_PACKAGE( OpenMP )
SET(CMAKE_CXX_FLAGS "${OpenMP_CXX_FLAGS}")
IF ( OpenMP_CXX_FLAGS )
MESSAGE("------- Adding compiler parameter for OpenMP")
ADD_DEFINITIONS(-DOPENMP_ENABLE)
ENDIF()
ENDIF()
and to create the Qt plugin, I configured CMake as follows:
ADD_DEFINITIONS(-DQT_PLUGIN)
ADD_DEFINITIONS(-DQT_SHARED)
This configuration compiles fine with Linux. On Windows, it compiles fine without OpenMP support. But when building with OpenMP support, this leads to an error
:/mingw4//../Library/GCC/mingw32/4.5.0/../../../../mingw32//ld.exe: : --enable-auto-import . , DLL. CMakeFiles\RinzoDLPluginIPThreshold.dir\\dialogthresholdconfig.cpp.obj: C:/svnosaka3d/trunk/osaka3d/rinzo-platform/src/dlplugins/imageprocplugins/thresholdPlgin/ui/dialogthresholdconfig.cpp: 221: undefined GOMP_parallel_stat'
CMakeFiles\RinzoDLPluginIPThreshold.dir\ui\dialogthresholdconfig.cpp.obj:C:/svnosaka3d/trunk/osaka3d/rinzo-platform/src/dlplugins/imageprocplugins/thresholdPlgin/ui/dialogthresholdconfig.cpp:221:
undefined reference to GOMP_parallel_end
CMakeFiles\RinzoDLPluginIPThreshold.dir\\dialogthresholdconfig.cpp.obj: ZN21DialogThresholdConfig9slotApplyEv.omp_fn.0':
C:/svn/osaka3d/trunk/osaka3d/rinzo-platform/src/dlplugins/imageprocplugins/threholdPlugin/ui/dialogthresholdconfig.cpp:223:
undefined reference to omp_get_nu_threads' :/svn/osaka3d/trunk/osaka3d/rinzo-platform/src/dlplugins/imageprocplugins/threholdPlugin/ui/dialogthresholdconfig.cpp: 223: undefined omp_get_thead_num'
C:/svn/osaka3d/trunk/osaka3d/rinzo-platform/src/dlplugins/imageprocplugins/threholdPlugin/ui/dialogthresholdconfig.cpp:233:
undefined reference to omp_get_thead_num 'collect2: ld 1 make [2]: * [//libRinzoDLPluginIPThreshold.dll] 1
CMake:
http://www.keepandshare.com/doc/view.php?id=2552392&da=y
?