Compilação cruzada e CMake

5

Estou tentando fazer a compilação cruzada de CGAL em uma máquina Linux amd64 para a arquitetura ARM. A CGAL usa o CMake para construção.

A CGAL tem várias dependências, incluindo GMP e MPFR

Mas quando eu compila, naturalmente, esses programas de teste não serão executados na máquina host. Aqui está um exemplo:

/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1
/opt/Company/ArmTools_GCC435_GLIBC_Q3_2011/bin/arm-rc-linux-gnueabi-g++        -fPIC CMakeFiles/cmTryCompileExec.dir/print_GMP_version.cpp.o  -o cmTryCompileExec -rdynamic /home/pmw/Software-Engineering/build/Lib/mpir-2.6.0/arm/lib/libgmp.a
gmake[1]: Leaving directory '/home/pmw/Software-Engineering/SW_Tools/CGAL-4.1/CMakeFiles/CMakeTmp'
/home/pmw/Software-Engineering/SW_Tools/CGAL-4.1/CMakeFiles/CMakeTmp/cmTryCompileExec: /home/pmw/Software-Engineering/SW_Tools/CGAL-4.1/CMakeFiles/CMakeTmp/cmTryCompileExec: cannot execute binary file

-- USING GMP_VERSION = 'unknown'

Eu encontrei uma sugestão (se eu entendi corretamente) para especificar a versão do GMP explicitamente; isso deve impedir que CMake tente e falhe em determiná-lo. Então eu criei um arquivo contendo esta linha:

SET(GMP_VERSION 2.6.0)

e invocou o CMake com o argumento -C path/to/my/file . Mas isso não mudou nada. Então tentei invocar o CMake com o argumento -DCMAKE_TOOLCHAIN_FILE=/path/to/my/file . Mais uma vez, sem efeito. Eu vejo que o CMake é capaz de encontrar e analisar esse arquivo, no entanto.

Então, como posso convencer o CMake a não tentar construir e executar programas cross-compilados na máquina host?

Peço desculpas antecipadamente se este Unix & O site do Linux StackExchange não é o melhor lugar para essa pergunta. Na semana passada, publiquei minha pergunta na lista de discussão CGAL (que é agora, os três primeiros resultados do Google para "cross-compiling cgal"; sou famoso!), mas não recebi respostas.

    
por Philip 20.11.2012 / 00:19

1 resposta

0

Dê uma olhada no wiki do CMake , acredito que você precisa mexer um pouco com a variável CMAKE_CROSSCOMPILING e o cache do CMake (todos descritos no wiki).

    
por 20.11.2012 / 18:34