emmintrin.h:31:3: error: #error "SSE2 instruction set not enabled" # error "SSE2 instruction set not enabled", "scaling solution"

emmintrin.h:31:3: error: #error "SSE2 instruction set not enabled" # error "SSE2 instruction set not enabled", "scaling solution"

我一直在构建多个需要 sse2 指令集的项目。添加 中提到的 -march=native 到现在为止已经完成了工作。

然而,在我需要这个的 3 个项目中,makefile 中的 gcc 命令很容易找到并且稍微编辑 makefile 就可以工作。现在我处理一个由 cmake 生成的复杂得多的 makefile。我相信它会在其他文件夹中生成更多的 makefile,然后运行它们等。因此,仅添加一个简单的 -march=native 既不可取也不容易,如果可行的话,将花费大量时间。

有没有办法始终启用 sse2,与现在相反?我用谷歌搜索了这个,但没找到。

考虑到我从 github 下载的 makefile 中没有一个包含 -march=native,这让我相信确实有一些方法可以在 gcc/g 上设置它++ 事先等级?

我找到了这个 -mfpmath=sse 标志,但无法制定正确的 gcc/g++ 命令(如果相关)。

你能帮帮我吗?

您可以在CMakeLists.txt

中添加编译器选项-march=native
SET(PROJECT_FLAGS "-march=native")
SET(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} ${PROJECT_FLAGS }")

或者

add_compile_options(-march=native) # CMake 2.8.12 or newer