#ERROR“设置不启用SSE2指令”,包括当(#error “SSE2 instruction s

2019-09-02 02:37发布

我正尝试编译CMake的一些C ++代码,并使用了包括<emmintrin.h>并获得以下错误做:

 #error "SSE2 instruction set not enabled"

我有一个Linux(薄荷)系统(内核3.5)英特尔赛扬双核处理器。

根据维基百科赛扬双核能够执行SSE2指令和SSE2标志根据设定/proc/cpuinfo 。 但笔者这个问题提到了有限的支持SSE英特尔赛扬的。

我已经试过用在我的SSE编译器选项CMakeLists.txt

set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-msse -msse2 -msse3")

..但什么都没有改变。 cmake . 工作正常,但make给出上述错误信息。

我一定要改变的CMakeLists.txt设置或不赛扬双核根本不(完全)支持SSE2?

Answer 1:

你需要调用

set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-msse -msse2 -msse3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -msse3")

CMAKE_C_FLAGS应用于C文件,并从您的文章的C ++代码,我想你是编译的C ++文件,因此需要改变CMAKE_CXX_FLAGS代替。

至于引号的定位; 在原始版本中,你设置CMAKE_C_FLAGS包含2个独立的项目中,第一个是初始值CMAKE_C_FLAGS ,第二个是字符串"-msse -msse2 -msse3"

CMake的保持列表像这样作为分号分隔的条目。 在的情况下CMAKE_<lang>_FLAGS ,总是它们由含有所有需要的标志的字符串的一个单一的值。



文章来源: #error “SSE2 instruction set not enabled” when including