Как определить наличие SSE в CMake - PullRequest
5 голосов
/ 01 августа 2011

В файле CMakeLists.txt есть ли способ определить наивысший доступный уровень SSE и сохранить его в CMAKE_CXX_FLAGS?Другими словами, я хотел бы иметь возможность написать что-то вроде:

FindSSE()  # defines SSE_FLAGS
set(CMAKE_CXX_FLAGS ${SSE_FLAGS})

Например, если платформа поддерживает до уровня 3 SSE, то FindSSE () установит SSE_FLAGS в -msse3.

1 Ответ

3 голосов
/ 01 августа 2011

Это может быть излишним, но OptimizeForArchitecture.cmake из vc on gitorious предоставит список оптимизаций, основанных на архитектуре.

Вы можете использовать этот скрипт напрямую или урезать еговплоть до кода, который вам нужен.

Лучше решение состоит в том, чтобы создать небольшой тестовый скрипт cmake, который использует инструкции SSE, и проверить, компилируется ли каждый вариант.

РЕДАКТИРОВАТЬ: Более конкретно, есть FindSSE.cmake из того же источника, хотя он все еще использует несколько неуклюжий метод анализа /proc/cpuinfo

...