El comstackdor de variables pasadas CMake no puede comstackr un progtwig simple

Estoy intentando cruzar comstackr una aplicación usando CMake. Tengo todo funcionando cuando codifico las routes al comstackdor cruzado. Sin embargo, cuando paso por las routes a través de los arguments de la command-line, parece que no los sigue correctamente.

Aquí está mi script de shell, desde el cual clono un repository, aplico un parche y luego bash una compilation de cmake:

cmake -D BASE=$PATH_TO_TOOLCHAIN_ROOT -D BOOST_ROOT=$BOOST_ROOT -D CMAKE_TOOLCHAIN_FILE=../toolchain.cmake ../${GIT_PATH}/src/ 

Aquí está mi file toolchain.cmake:

 set( CMAKE_SYSTEM_NAME Linux ) set( CMAKE_SYSTEM_VERSION 1 ) set(PKG_CONFIG_EXECUTABLE "/usr/bin/pkg-config") message("Base: ${BASE}") message("Boost: ${BOOST_ROOT}") set(CMAKE_SYSROOT "${BASE}/sysroot") set(CMAKE_C_COMPILER "${BASE}/sysroot/usr/bin/mipsel-linux-gcc") set(CMAKE_CXX_COMPILER "${BASE}/sysroot/usr/bin/mipsel-linux-g++") set( CMAKE_FIND_ROOT_PATH "${BASE}/sysroot") set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) # for libraries and headers in the target directories set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) include_directories(${CMAKE_SYSROOT}/usr/local/include/) set(BOOST_INCLUDEDIR ${BOOST_ROOT}/include) set(BOOST_LIBRARYDIR ${BOOST_ROOT}/lib) include_directories(${BOOST_INCLUDEDIR}) set(OPENSSL_ROOT_DIR ${BASE}/sysroot/usr/lib/) set(OPENSSL_SSL_LIBRARY libssl.so) set(OPENSSL_CRYPTO_LIBRARY libcrypto.so) 

De nuevo, si codigo $ {BASE} en este file de la cadena de herramientas como / ruta / a / mipsel-linux-gcc, funciona.

Sin embargo, cuando llamo esto, obtengo esta printing:

 + cmake -D BASE=/path/to/toolchain/root -D BOOST_ROOT=/home/matthew/boost/out -D CMAKE_TOOLCHAIN_FILE=../toolchain.cmake ../build/src/ Base: /path/to/toolchain/root Boost: /home/matthew/boost/out Base: /path/to/toolchain/root Boost: /home/matthew/boost/out -- The C compiler identification is GNU 4.7.3 -- The CXX compiler identification is GNU 4.7.3 -- Check for working C compiler: /path/to/toolchain/root/sysroot/usr/bin/mipsel-linux-gcc Base: Boost: -- Check for working C compiler: /path/to/toolchain/root/sysroot/usr/bin/mipsel-linux-gcc -- broken CMake Error at /usr/local/share/cmake-3.8/Modules/CMakeTestCCompiler.cmake:51 (message): The C compiler "/path/to/toolchain/root/sysroot/usr/bin/mipsel-linux-gcc" is not able to compile a simple test program. It fails with the following output: Change Dir: /home/matthew/Desktop/clones/build/CMakeFiles/CMakeTmp 

Aquí puede ver que claramente encuentra los comstackdores y los identifica como GNU 4.7.3. Sin embargo, observe las copys impresas Base: / ruta / a / cadena de herramientas / raíz . Esta directiva de post () solo se incluyó una vez en toolchain.cmake, y sin embargo se imprime varias veces aquí, y finalmente se muestra como una variable en blanco. Después de eso, se queja de que el comstackdor de C no funciona, aunque claramente imprime la ruta completa a ese comstackdor.

He visto problemas similares de otras personas, pero esto parece diferente porque funciona bien cuando codigo el path en toolchain.cmake al comstackdor C y CXX. He intentado con comillas alnetworkingedor de la directiva de comstackdor C y CXX, así como sin ella.

¡También estoy interesado en aprender por qué mis directivas de posts se imprimen tantas veces!

Gracias

El CMake está haciendo una compilation de testing para descubrir si el comstackdor puede build una aplicación simple (básicamente solo contiene main() ). Esto puede fallar por varias razones, por ejemplo, el comstackdor no funciona con los indicadores detectados de CMake por defecto, etc.

Debería verificar CMakeError.log y CMakeOutput.log para ver por qué falló la compilation de testing.

Para omitir la testing del comstackdor, también puede poner lo siguiente en el file de la cadena de herramientas:

 set(CMAKE_C_COMPILER_WORKS 1) set(CMAKE_CXX_COMPILER_WORKS 1) 

Esto omitirá la testing del comstackdor, pero, por supuesto, la compilation podría fallar luego cuando realmente construyas tu proyecto.