title: How to fix "Could not find toolchain file" "CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage" cmake libjpeg-turbo.so?
body: <p>I am working on generating libjpeg-turbo.so files for different CPU architectures. </p>
  
  <p>If I execute the below cmake in my build folder I am getting this error even though the toolchain file is present in that path:</p>
  
  <pre><code>$ cmake -G"Unix Makefiles" \
        -DANDROID_ABI=arm64-v8a \
        -DANDROID_ARM_MODE=arm \
        -DANDROID_PLATFORM=android-${21} \
        -DANDROID_TOOLCHAIN=${gcc} \
        -DCMAKE_ASM_FLAGS="--target=aarch64-linux-android${21}" \
        -DCMAKE_TOOLCHAIN_FILE=$/home/ingrid/Android/android-ndk-r16b/build/cmake/android.toolchain.cmake \
         /home/ingrid/Ingrid/NeoReader/libjpeg-turbo-master/
  </code></pre>
  
  <p><strong>Output:</strong></p>
  
  <pre><code>CMake Error at /usr/share/cmake-3.5/Modules/CMakeDetermineSystem.cmake:104 (message):
    Could not find toolchain file:
    $/home/ingrid/Android/android-ndk-r16b/build/cmake/android.toolchain.cmake
  Call Stack (most recent call first):
    CMakeLists.txt:7 (project)
  
  
  CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
  -- Configuring incomplete, errors occurred!
  </code></pre>
  
  <p>However, if I remove <code>-DANDROID_TOOLCHAIN=${gcc} \</code> and <code>-DCMAKE_TOOLCHAIN_FILE=$/home/ingrid/Android/android-ndk-r16b/build/cmake/android.toolchain.cmake \</code> then I am able to generate the .so file but it is generating of x86_64 and not arm64_v8a. The below is the cmake and output for it:</p>
  
  <pre><code>$ cmake -G"Unix Makefiles" \
        -DANDROID_ABI=arm64-v8a \
        -DANDROID_ARM_MODE=arm \
        -DANDROID_PLATFORM=android-${21} \
        -DCMAKE_ASM_FLAGS="--target=aarch64-linux-android${21}" \
         /home/ingrid/Ingrid/NeoReader/libjpeg-turbo-master/
  </code></pre>
  
  <p><strong>Output:</strong></p>
  
  <pre><code>-- The C compiler identification is GNU 5.4.0
  -- Check for working C compiler: /usr/bin/cc
  -- Check for working C compiler: /usr/bin/cc -- works
  -- Detecting C compiler ABI info
  -- Detecting C compiler ABI info - done
  -- Detecting C compile features
  -- Detecting C compile features - done
  -- CMAKE_BUILD_TYPE = Release
  -- VERSION = 2.0.3, BUILD = 20190707
  -- 64-bit build (x86_64)
  -- CMAKE_INSTALL_PREFIX = /opt/libjpeg-turbo
  -- CMAKE_INSTALL_BINDIR = bin (/opt/libjpeg-turbo/bin)
  -- CMAKE_INSTALL_DATAROOTDIR =  (/opt/libjpeg-turbo)
  -- CMAKE_INSTALL_DOCDIR = doc (/opt/libjpeg-turbo/doc)
  -- CMAKE_INSTALL_INCLUDEDIR = include (/opt/libjpeg-turbo/include)
  -- CMAKE_INSTALL_LIBDIR = lib64 (/opt/libjpeg-turbo/lib64)
  -- CMAKE_INSTALL_MANDIR = man (/opt/libjpeg-turbo/man)
  -- Shared libraries enabled (ENABLE_SHARED = 1)
  -- Static libraries enabled (ENABLE_STATIC = 1)
  -- 12-bit JPEG support disabled (WITH_12BIT = 0)
  -- Arithmetic decoding support enabled (WITH_ARITH_DEC = 1)
  -- Arithmetic encoding support enabled (WITH_ARITH_ENC = 1)
  -- TurboJPEG API library enabled (WITH_TURBOJPEG = 1)
  -- TurboJPEG Java wrapper disabled (WITH_JAVA = 0)
  -- In-memory source/destination managers enabled (WITH_MEM_SRCDST = 1)
  -- Emulating libjpeg API/ABI v6.2 (WITH_JPEG7 = 0, WITH_JPEG8 = 0)
  -- libjpeg API shared library version = 62.3.0
  -- Compiler flags =  -O3 -DNDEBUG
  -- Linker flags =  
  -- Looking for sys/types.h
  -- Looking for sys/types.h - found
  -- Looking for stdint.h
  -- Looking for stdint.h - found
  -- Looking for stddef.h
  -- Looking for stddef.h - found
  -- Check size of size_t
  -- Check size of size_t - done
  -- Check size of unsigned long
  -- Check size of unsigned long - done
  -- Performing Test HAVE_BUILTIN_CTZL
  -- Performing Test HAVE_BUILTIN_CTZL - Success
  -- Looking for include file locale.h
  -- Looking for include file locale.h - found
  -- Looking for include file stdlib.h
  -- Looking for include file stdlib.h - found
  -- Looking for include file sys/types.h
  -- Looking for include file sys/types.h - found
  -- Looking for memset
  -- Looking for memset - found
  -- Looking for memcpy
  -- Looking for memcpy - found
  -- Check size of unsigned char
  -- Check size of unsigned char - done
  -- Check size of unsigned short
  -- Check size of unsigned short - done
  -- Performing Test INCOMPLETE_TYPES
  -- Performing Test INCOMPLETE_TYPES - Success
  -- Compiler supports pointers to undefined structures.
  -- Performing Test RIGHT_SHIFT_IS_UNSIGNED
  -- Performing Test RIGHT_SHIFT_IS_UNSIGNED - Failed
  -- Performing Test __CHAR_UNSIGNED__
  -- Performing Test __CHAR_UNSIGNED__ - Failed
  -- Performing Test INLINE_WORKS
  -- Performing Test INLINE_WORKS - Success
  -- INLINE = __inline__ __attribute__((always_inline)) (FORCE_INLINE = 1)
  -- Performing Test HAVE_VERSION_SCRIPT
  -- Performing Test HAVE_VERSION_SCRIPT - Success
  -- Linker supports GNU-style version scripts
  -- CMAKE_EXECUTABLE_SUFFIX = 
  -- The ASM_NASM compiler identification is unknown
  -- Found assembler: /usr/bin/nasm
  -- CMAKE_ASM_NASM_COMPILER = /usr/bin/nasm
  -- CMAKE_ASM_NASM_OBJECT_FORMAT = elf64
  -- CMAKE_ASM_NASM_FLAGS =  -DELF -D__x86_64__ -DPIC 
  -- SIMD extensions: x86_64 (WITH_SIMD = 1)
  -- FLOATTEST = sse
  -- RPM architecture = x86_64, DEB architecture = amd64
  -- Configuring done
  -- Generating done
  CMake Warning:
    Manually-specified variables were not used by the project:
  
      ANDROID_ABI
      ANDROID_ARM_MODE
      ANDROID_PLATFORM
      CMAKE_ASM_FLAGS
  
  
  -- Build files have been written to: /home/ingrid/Ingrid/NeoReader/libjpeg-turbo-master/build-arm64-v8a
  </code></pre>
  
  <p>Can you please let me know how to resolve this toolchain error so that I can generate the libjpeg-turbo.so file for the arm64-v8a architecture?</p>
  
  <p>Thank you.</p>