2011-03-17 2 views
40

컴파일러와 OS를 사용하는 x86 및 x64 아키텍처 용 컴파일을 허용하는 CMake 설치 방법을 알고 싶습니다.CMake 다중 아키텍처 컴파일

+0

을 아마 관련 : http://stackoverflow.com/questions/5280168/ Making-a-cross-platform-library-with-cmake –

답변

73

CMake가 32/64bit 옵션을 가지고 있다면 좋을 것입니다. 그렇지 않으므로 다른 컴파일러 또는 생성기 종속 방법 중 하나를 적용해야합니다. 예 :

  • GCC (Linux) 및 기타 컴파일러. 썬 스튜디오 CFLAGSCXXFLAGS-m32 (32 비트 빌드) 또는 -m64 (64 비트 빌드)으로 설정하십시오.

  • Windows, Visual Studio generator. 64 비트 생성기 사용 (예 :

    cmake -G "Visual Studio 10 Win64" path\to\source\dir

    64 비트 (64)를 컴파일한다. 생성자 이름에 "Win64"를 생략하십시오. 32 비트 용으로 빌드하십시오.

  • Mac OS X CMAKE_OSX_ARCHITECTURES CMake 변수를 사용하십시오.

    cmake -DCMAKE_OSX_ARCHITECTURES=i386 /path/to/source/dir

    32 비트

    cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 /path/to/source/dir 64 비트를 컴파일 구축 컴파일합니다.

    cmake "-DCMAKE_OSX_ARCHITECTURES=x86_64;i386" /path/to/source/dir

    96 비트 범용 바이너리 :

위의 약간 재 진술되어 생성됩니다. CMAKE_OSX_ARCHITECTURES = I386가 당신에게 오류를 제공하는 경우

http://dev.mysql.com/doc/internals/en/compiling-for-different-hardware-achitectures.html

+0

이것은 훌륭합니다! 그러나 Visual Studio의 경우 생성기이므로 -G가 아닌가? 또한 Visual Studio의 경우 CMakeLists.txt 파일에 어떤 플래그를 설정하여 자동으로 사용할지 (즉, i386 또는 x86-64를 선택하고 응답에 따라 설정하도록 요청) 플래그를 설정할 수 있습니까? – OniLink

+0

-G이어야하며 생성기는 명령 줄에서 전달되어야합니다. Qt 기반 그래픽 인터페이스 인 cmake-gui를 사용하고 드롭 다운 목록에서 적절한 생성기를 선택할 수도 있습니다. –

+1

@OniLink, @Marcus. 네, -G 여야합니다. 알았어 고마워요! 나는 그것을 고쳤으며 (또한 MySQL Wiki에서 같은 구절을 고쳤다). 내 knowlegde, CMakeLists 내부 비주얼 스튜디오에 대한 bitness을 변경하십시오.txt는 불가능합니다. 여기 비트는 생성자의 속성이며 생성기는 동적으로 설정/변경할 수 없습니다. –

2

온라인으로 CMake tutorial을 사용할 수 있습니다. 기본 사항은 온라인 CMake 책에서 가져온 것입니다. CMake의 철학은 하나의 소스 트리로 여러 빌드 디렉토리를 사용하는 것입니다. 따라서 Windows에서 Visual Studio를 사용하고 32 비트 컴파일러를 사용하여 빌드 디렉토리를 만들고 64 비트 컴파일러를 사용하여 빌드 디렉토리를 만들 수 있습니다.

CMake는 많은 컴파일러와 운영 체제를 대상으로하지만 어떤 언어를 사용하고 있는지, 어떤 운영 체제/컴파일러/아키텍처를 생각하고 있는지, 툴킷/라이브러리를 사용하고 있는지는 언급하지 않았습니다.

+0

대답은 그 질문과 아무 관련이 없습니다. – Yola

0

"알 수없는 옵션 -arch"시작 대신 시도 :

cmake -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_SYSTEM_PROCESSOR=i386 -DCMAKE_SYSTEM_VERSION=10