2012-09-24 3 views
0

힘 cmake는 LLVM

내 목표는 armv7s를 지원하는 iOS 용 OpenCV의 (의 S는 어려운 부분이다) 아키텍처를 컴파일 할 수 있지만 진행을 할 수 없었습니다입니다 배경을 OpenCV를 컴파일합니다. 가장 최근의 이론은 문제는 라이브러리와 함께 제공되는 cmake 파일이 armv7을 지원하지 않는다고 생각하는 컴파일러로 gcc를 사용한다는 것입니다. 나는 그러나 cmake에 완전히 새롭고 컴파일러를 바꿀 수 없었다.

내가 컴파일러를 의심하는 이유 때문에 내가 아는 한 armv7s를 포함해야 라인

set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)" CACHE string "Build architecture for iOS") 

이다. 해당 행을

set (CMAKE_OSX_ARCHITECTURES "armv6;armv7;armv7s;i386" CACHE string "Build architecture for iOS") 

으로 변경하면 아무 효과가 없습니다.

here, herehere을 설정하는 방법에 대한 설명이 있습니다. 내 문제는 기존의 쉐이크 시스템을 바꾸려고하고 내 변화가 어떤 결과를 가져올 지 모르기 때문입니다. 해당 코드는 here에서 다운로드 할 수 있습니다. 내가 OpenCV의-2.4.2에서 파이썬 스크립트를 실행 프레임 워크/IOS 내가 관련 cmake 파일을 OpenCV-2.4.2/IOS/cmake에있는 무엇을 말할 수에서

python build_framework.py ~/Desktop 

를 구축합니다. 단지 3 개이며 모두 모두 매우 짧습니다. 나의 가장 최근의 시도는 this SO 질문을 복사하기위한 시도

SET (DEVROOT "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer") 
SET (CC   "${DEVROOT}/usr/bin/llvm-gcc-4.2") 
SET (CXX  "${DEVROOT}/usr/bin/llvm-g++-4.2") 
CMAKE_FORCE_C_COMPILER   (${CC} CLang) 
CMAKE_FORCE_CXX_COMPILER  (${CXX} CLang) 

에 툴체인

CMAKE_FORCE_C_COMPILER (gcc gcc) 
CMAKE_FORCE_CXX_COMPILER (g++ g++) 

에 두 줄을 변경했다. 이 내 깊이를 벗어나면

질문

  1. 내 가장 중요한 첫 번째 질문입니다. 필자는 컴파일러/타겟 아키텍처를 변경하는 것이 어딘가에 설정된 간단한 플래그 일 것이라고 추측했지만 그 사실이 덜 확신하게되었습니다. 또한 전체 디렉토리 OpenCV-2.4.2/cmake는 훨씬 더 큰 cmake 파일로 가득 차 있습니다. 나는 그 내용에 대해 걱정할 필요가 없다는 희망을 피했습니다. 10 시간 이내에 해결할 수있는 문제입니까?
  2. 이전 질문에 예라고 답한 경우 어떤 방향으로 알려 주실 수 있습니까? 추천 읽기? OpenCV-2.4.2/cmake의 내용을 무시하는 것을 정당화합니까? 나는 어둠 속에서 꽤 오래 동안 성공을 거두지 않고 촬영했다.
  3. 이것이 원래 내가 원했던 것처럼 간단하다면 어떻게 할 수 있습니까?

업데이트

나는이 작업을 수행하는 방법을 알아낼하지 않은 적이 있지만, 컴파일 설정을 쉽게 변경 할 수있는 라이브러리 here의 엑스 코드 버전이 있습니다.

답변

0

CMAKE_C_COMPILIERCMAKE_CXX_COMPILIER으로 설정하십시오.

편집 : 이것은 armv7에 대해 이미 빌드 한 것으로 가정합니다.
편집 2 : 이것은 컴파일러를 변경합니다.

+0

예는 GCC와 g ++ – Hammer

+0

내가 설정을 넣어 ARMv7을 완벽하게 구축 (CMAKE_C_COMPILIER "LLVM-gcc- 4.2 ") set (CMAKE_CXX_COMPILIER"llvm-g ++ - 4.2 ")는 내가 생각하기에 cmake 진입 점입니다. 오류없이 실행되었지만 OpenCV 2.4.2 디스플레이의 일반 구성에는 아무런 영향을 미치지 않습니다. gcc와 g ++는 여전히 컴파일러입니다 – Hammer

+0

toolchain 파일을 의미합니까? – dreamzor

0

질문에 많은 링크가 있지만 정보가 포함 된 원래 링크를 찾지 못했습니다. to cross compile with CMake.

기존 빌드 시스템에서는 변경하지 않아야합니다.

일반적으로 대상 아키텍처에 맞게 toolchain file을 만들고 cmake를 실행해야합니다.

cmake -DCMAKE_TOOLCHAIN_FILE = < 당신의 툴체인 파일> < OpenCV의에서 CMakeLists.txt 경로>