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).
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.
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).
Tags cmake cross-compilation