CMAKE_TOOLCHAIN_FILE


CMAKE_TOOLCHAIN_FILE

absolute or relative path to a cmake script which sets up all the toolchain related variables mentioned above

CMAKE給交叉編譯預留了一個變量CMAKE_TOOLCHAIN_FILE,它定義了一個.cmake文件的路徑,該文件里面設置了一系列CMAKE變量和屬性,比如C_COMPILER,CXX_COMPILER等。.cmake文件的好處是一次編寫多次使用,不同平台架構的交叉編譯工具鏈可以編寫一個獨立的toolchain.cmake文件,而工程的CMakeLists.txt可以編寫為通用格式,對工具鏈不可見。cmake腳本可以如下形式:

cmake -DCMAKE_TOOLCHAIN_FILE=./toolchains/ndk64-toolchain.cmake .. && make
cmake -DCMAKE_TOOLCHAIN_FILE=./toolchain/ndk32-toolchain.cmake .. && make

toolchain.cmake demo

set(CMAKE_SYSTEM_NAME Android)

set(CMAKE_ANDROID_API 21)
set(CMAKE_ANDROID_ARCH_ABI aarch64)
set(CMAKE_ANDROID_STL_TYPE gnustl_static)

set(TOOLCHAIN_PATH /opt/sdk/android-aarch64)
# set(ANDROID_LIB_PATH ${TOOLCHAIN_PATH}/sysroot/usr/lib)

set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-linux-android-gcc)
set(CMAKE_C_FLAGS "-D__ANDROID_API__=21  -fno-exceptions -O2 -fpie -fpic -fPIE -fPIC -pie -lm -Wl,-llog" CACHE STRING "" FORCE)

set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-linux-android-g++)
set(CMAKE_CXX_FLAGS "-D__ANDROID_API__=21 -DANDROID_STL=gnustl_static -fno-exceptions -O2 -fpie -fpic -fPIE -fPIC -pie -std=c++11 -lm -lstdc++ -Wl,-llog" CACHE STRING "" FORCE)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM