Some Hardware Guy
Some Hardware Guy

Reputation: 164

Android cross compile command line on windows cmake using wrong compiler?

I don't know why this is giving me so much trouble. I'm trying to move from compiling this .so library on linux to compiling it on a windows machine. For some reason whenever I run cmake .. cmake always goes off and uses MSVC instead of the compiler I'm telling it to use in my cmake file. Maybe I've been staring at it for too long but I don't get what I have wrong. I even tried using the cmake in the Android sdk, same problem. What did I miss?

My cmake file:

cmake_minimum_required(VERSION 3.10.2)
project(TEST)


set(CMAKE_TOOLCHAIN_FILE "C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/build/cmake/android.toolchain.cmake")
set(ANDROID_ABI arm64-v8a)

set(TOOLCHAIN "C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64")


set(CC ${TOOLCHAIN}/bin/aarch64-linux-android28-clang)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN}/bin/aarch64-linux-android28-clang++)

set(CMAKE_C_COMPILER ${TOOLCHAIN}/bin/aarch64-linux-android28-clang)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN}/bin/aarch64-linux-android28-clang++)

include_directories(${CMAKE_SOURCE_DIR}/headers )


add_library( # Sets the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             #main.cpp
             Image_Reader.cpp
             CV_Main.cpp
             Native_Camera.cpp
             unityInterface.cpp
        )


#tensorflow lite
add_library(lib_tflite SHARED IMPORTED)
set_target_properties(lib_tflite
        PROPERTIES IMPORTED_LOCATION
        ${CMAKE_SOURCE_DIR}/arm64-v8a/libtensorflowlite.so)

#OpenCV
add_library(lib_opencv SHARED IMPORTED)
set_target_properties(lib_opencv
        PROPERTIES IMPORTED_LOCATION
        ${CMAKE_SOURCE_DIR}/arm64-v8a/libopencv_java4.so)






find_library( log-lib log C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/platforms/android-28/arch-arm/usr/lib NO_DEFUALT_PATH)
find_library( camera-lib camera2ndk C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/platforms/android-28/arch-arm/usr/lib NO_DEFUALT_PATH)
find_library( media-lib mediandk C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/platforms/android-28/arch-arm/usr/lib NO_DEFUALT_PATH)
find_library( android-lib android C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/platforms/android-28/arch-arm/usr/lib NO_DEFUALT_PATH)

target_link_libraries(native-lib ${log-lib} ${camera-lib} ${media-lib} ${android-lib} lib_tflite lib_opencv )

My output:

-- Building for: Visual Studio 15 2017
-- Selecting Windows SDK version 10.0.17763.0 to target Windows 6.1.7601.
-- The C compiler identification is MSVC 19.16.27035.0
-- The CXX compiler identification is MSVC 19.16.27035.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/
2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/
2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studi
o/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studi
o/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done

Upvotes: 0

Views: 879

Answers (1)

user15308163
user15308163

Reputation:

The 'project' call establishes the toolchain you are going to be using to compile your code.

cmake_minimum_required(VERSION 3.10.2)

# Must establish toolchain code before first project call!
set(CMAKE_TOOLCHAIN_FILE "C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/build/cmake/android.toolchain.cmake")
set(ANDROID_ABI arm64-v8a)
set(TOOLCHAIN "C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64")
set(CC ${TOOLCHAIN}/bin/aarch64-linux-android28-clang)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN}/bin/aarch64-linux-android28-clang++)
set(CMAKE_C_COMPILER ${TOOLCHAIN}/bin/aarch64-linux-android28-clang)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN}/bin/aarch64-linux-android28-clang++)

project(TEST)

Upvotes: 1

Related Questions