Qt5,Visual Studio 2012 Express和OpenMP。如何做?

4

我正在尝试使用Qt5和Visual Studio 2012编译器编译http://www.kevinbeason.com/smallpt/光线追踪器。

它可以正常工作,但是当我尝试添加openmp时,出现了问题。

QMAKE_CXXFLAGS += -fopenmp
LIBS += -fopenmp

对于项目project.pro,Qt提示/fopenmp未被识别并被忽略。

当我使用VS命令进行编译时。

cl /c /O2 /EHsc /openmp main.cpp

它很有效,并且我得到的程序比从Qt编译出来的快3倍。

如何使Qt识别openmp并在命令行中启用其他优化?

提前致谢。


尝试使用 QMAKE_LFLAGS += -fopenmp 替代 LIBS += -fopenmp - Pavel Strakhov
相同。警告LNK4044:选项'/fopenmp'未被识别;已忽略。 - Yassine Zaroui
2个回答

7
我最终获得了所有必需的元素,可以使用Qt Creator编译包含openmp的代码:
  1. 在源文件中添加 #include <omp.h> ,如果你使用上述命令行编译,则不需要此步骤。
  2. 在项目文件中添加 QMAKE_CXXFLAGS += -openmp,不能使用 -fopenmp。无需像我一样添加任何 openmp 库 ( LIBS += -openmp ) 或者 QMAKE_LFLAGS += -openmp
  3. 使用 Release 模式进行编译。在 Debug 模式下对性能没有影响。

其他优化选项已在 mkspecs\win32-msvc2012\qmake.conf 中配置好。

希望这可以帮助其他人。


0

我想使用openmp运行Qt项目。我已经按照上述步骤进行了操作,可以构建项目,但执行时间却增加而不是减少。

这是我使用的配置:

CONFIG += console c++11
CONFIG -= app_bundle
#CONFIG -= qt
QMAKE_CXXFLAGS+= -openmp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接