2011-08-01 6 views
5

CMakeLists.txt 파일에서 가능한 가장 높은 수준의 SSE를 검색하고이를 CMAKE_CXX_FLAGS에 저장하는 방법이 있습니까? 즉, 내가 좋아하는 뭔가를 쓸 수 싶습니다 플랫폼이 SSE 레벨 3를 지원하는 경우, 예를 들어CMake에서 sse 가용성을 감지하는 방법

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

을 다음 FindSSE는() -msse3하는 SSE_FLAGS을 설정합니다.

답변

3

이것은 과도 할 수도 있지만 vc on gitorious의 OptimizeForArchitecture.cmake은 아키텍처를 기반으로 한 최적화 목록을 제공합니다.

해당 스크립트를 직접 사용하거나 필요한 코드로 잘라낼 수 있습니다.

더 나은 해결책은 SSE 명령어를 사용하는 작은 cmake 테스트 스크립트를 작성하고 각 변형이 컴파일/실행되는지 확인하는 것입니다.

편집 : 그것은 여전히 ​​위의 제안은 리눅스 작동 /proc/cpuinfo

+0

을 구문 분석의 다소 투박한 방법을 사용하지만보다 구체적으로, 동일한 소스에서 FindSSE.cmake있다. Windows 용으로 거대한 "TODO"가 있습니다. – legalize

+0

FWIW, 업데이트 된 링크는 [OptimizeForArchitecture.cmake] (https://github.com/VcDevel/Vc/blob/master/cmake/OptimizeForArchitecture.cmake) 및 [FindSSE.cmake] (https://github.com/)입니다. VcDevel/Vc/blob/master/cmake/FindSSE.cmake). – scribbleink

관련 문제