我正在尝试编译OpenCV3
并将其放入Qt项目,因为Qt正式提供了MinGW
版本,因此我没有使用MinGW-w64
。
我在CMake中启用了ENABLE_CXX11
并禁用了ENABLE_PRECOMPILED_HEADERS
。
现在问题是MinGW
不包含std::thread
。
我知道mingw-std-threads
lib可以修复它。但我不想修改OpenCV源代码。有没有其他方法可以向MinGW
添加c ++线程功能?或者pthread
使用CMake
告诉OpenCV?
顺便说一句。我不想使用Qt's MinGW
,因为我认为使用官方MinGW
来编译lib将在任何版本的Qt中使用。
更新
在OpenCV detection_based_tracker.cpp
中,使用CV_CXX11
或std thread
选择pthread
Marco。但我没有看到任何地方define CV_CXX11
。
是detection_based_tracker.cpp
代码的一部分:
#ifdef CV_CXX11
#define USE_STD_THREADS
#endif
#ifdef USE_STD_THREADS
#include <thread>
#include <mutex>
#include <condition_variable>
#else //USE_STD_THREADS
#include <pthread.h>
#endif //USE_STD_THREADS
我的环境:
windows 7 64bit
cmake-3.10.1-win64-x64
opencv-3.4.0
gcc 6.3
我尝试了什么:
ENABLE_PRECOMPILED_HEADERS
CMake-gui
在#define USE_STD_THREADS
第48行中detection_based_tracker.cpp
mingw32-make
它已成功编译,但我必须修改OpenCV源代码。