cmake交叉编译参数toolchain

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmake交叉编译参数toolchain相关的知识,希望对你有一定的参考价值。

参考技术A CMake给交叉编译预留了一个很好的变量即 CMAKE_TOOLCHAIN_FILE ,它定义了一个文件的路径,这个文件即toolChain,里面set了一系列你需要改变的变量和属性,包括 C_COMPILER , CXX_COMPILER 。CMake为了不让用户每次交叉编译都要重新输入这些命令,因此它带来toolChain机制,简而言之就是一个cmake脚本,内嵌了你需要改变以及需要set的所有交叉环境的设置。

这里面也牵扯了一些相关的变量设置,在这里我通过自己的项目,简单介绍下几个比较重要的:

添加链接参数

买火车票、高铁票、机票,订酒店都打9折的出行工具TRIP, 点击注册

CMAKE交叉编译Android库

CMAKE交叉编译Android库

不管是在Windows,还是Ubuntu平台,

cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=F:/Download/android-ndk-r21-windows-x86_64/android-ndk-r21/build/cmake/android.toolchain.cmake -DANDROID_NDK=F:/Download/android-ndk-r21-windows-x86_64/android-ndk-r21 -DCMAKE_SYSTEM_NAME=Android -DANDROID_PLATFORM=android-27 -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI=arm64-v8a -DAndroid=ON -DANDROID_STL=c++_static -DCMAKE_CXX_STANDARD=11 -DANDROID_NATIVE_API_LEVEL=21 ..

-- Check for working C compiler: F:/Download/android-ndk-r21-windows-x86_64/android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe
-- Check for working C compiler: F:/Download/android-ndk-r21-windows-x86_64/android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.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: F:/Download/android-ndk-r21-windows-x86_64/android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe
-- Check for working CXX compiler: F:/Download/android-ndk-r21-windows-x86_64/android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CMAKE_HOST_SYSTEM_NAME: Windows
-- CMAKE_HOST_SYSTEM_VERSION: 10.0.17763
-- CMAKE_HOST_SYSTEM_PROCESSOR: AMD64
-- CMAKE_HOST_SYSTEM: Windows-10.0.17763
-- CMAKE_SYSTEM_NAME: Android
-- CMAKE_SYSTEM_VERSION: 1
-- CMAKE_SYSTEM_PROCESSOR: armv7-a
-- CMAKE_SYSTEM: Android-1

一定记得是外部指定CMAKE_TOOLCHAIN_FILE,在CMakeLists.txt内部指定是会出错的(而且是在make阶段报错,cmake阶段不报),且错误千奇百怪,切记切记~

以上是关于cmake交叉编译参数toolchain的主要内容,如果未能解决你的问题,请参考以下文章

CMAKE交叉编译Android库

CMAKE交叉编译Android库

CMAKE交叉编译Android库

CMake基础教程(36)Linux交叉编译

CMAKE_TOOLCHAIN_FILE

ubuntu32bit的系统如何配置mingw-w64的交叉编译toolchain?