SIMD組み込み関数を使用するcmakeを使用してCプログラムをコンパイルしようとしています。コンパイルしようとすると、2つのエラーが発生します
/ usr/lib/gcc/x86_64-linux-gnu/5/include /smmintrin.h:326:1:エラー:への呼び出しでインライン化に失敗しましたalways_inline'_mm_mullo_epi32 ':ターゲット固有のオプションの不一致_mm_mullo_epi32(__ m128i __X、__ m128i __Y)
/ usr/lib/gcc/x86_64-linux-gnu/5/include /tmmintrin.h:136:1:エラー:への呼び出しでインライン化に失敗しましたalways_inline'_mm_shuffle_epi8 ':ターゲット固有のオプションの不一致_mm_shuffle_epi8(__ m128i __X、__ m128i __Y)
この問題はここですでに解決されています StackOverflow 設定することで
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
私はまったく同じ、そして他の多くのオプションを試します。しかし、私のプロジェクトはまだコンパイルに失敗します。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -sse4_1")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=nehalem")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1 -msse4.2")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ssse3")
C++ではなくCコードをコンパイルしているので、次のものが必要です。
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1")
他のすべての-march XXX
および-msseXXX
設定を取り除くことができます。
CとC++を組み合わせて使用している場合は、次を追加することもできます。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1")