Cmake交叉编译标志

Posted

技术标签:

【中文标题】Cmake交叉编译标志【英文标题】:Cmake cross compile flags 【发布时间】:2012-06-18 04:58:29 【问题描述】:

我正在为 Linaro 工具链编写 toolchain.cmake 文件。

include(CMakeForceCompiler)
set(CMAKE_CROSSCOMPILING   TRUE)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_SYSTEM_PROCESSOR "armv7-a")
set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS -fPIC -Wno-psabi -frtti -fexceptions" )
set(CMAKE_C_FLAGS "$CMAKE_C_FLAGS -fPIC -Wno-psabi -fexceptions" )
set(CMAKE_C_COMPILER /home/stranger/linaro/android-toolchain-eabi/bin/arm-linux-androideabi-gcc)
set(CMAKE_CXX_COMPILER /home/stranger/linaro/android-toolchain-eabi/bin/arm-linux-androideabi-g++)
CMAKE_FORCE_C_COMPILER("$CMAKE_C_COMPILER" GNU)
CMAKE_FORCE_CXX_COMPILER("$CMAKE_CXX_COMPILER" GNU)
set(CMAKE_FIND_ROOT_PATH  home/stranger/linaro/android-toolchain-eabi/arm-linux-androideabi)
include_directories( SYSTEM /home/stranger/android-ndk-r8/platforms/android-14/arch-arm/usr/include)
include_directories( SYSTEM /home/stranger/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include)
include_directories( SYSTEM /home/stranger/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include)

我运行 cmake:

cmake -DBUILD_ANDROID=On -DCMAKE_TOOLCHAIN_FILE=<path to this toolchain.cmake>  -DCMAKE_BUILD_TYPE=Release <path to my cmake project>

但是在编译时,我有关于异常的错误,而不是在工具链文件中定义的编译器标志:

error: exception handling disabled, use -fexceptions to enable

据我所知,我的 CMAKE_C_FLAGS_RELEASE,CMAKE_CXX_FLAGS_RELEASE 无效。为什么?

【问题讨论】:

欢迎来到 Stack Overflow!如果您找到了自己问题的答案,您可以自己回答并将其标记为已接受,以便其他人知道此问题已解决 谢谢!但是您自己的答案有 6 小时的限制。 不要设置CMAKE_CROSSCOMPILING。它由 CMake 设置。请参阅参考文档。 【参考方案1】:

问题解决了,我的错。我在主项目中使用set(CMAKE_CXX_FLAGS "&lt;flags&gt;") 对抗set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS&lt;flags&gt;"。我很困惑,因为这个 CMakeLists.txt 适用于 android-cmake 和 Google-NDK(而不是所有 android-cmake 工具链标志都被拒绝)。

【讨论】:

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

cmake交叉编译的使用

使用 cmake 进行交叉编译

CMake交叉编译目标rpath

cmake指定交叉编译

CMake交叉编译

make/cmake:海思himix200交叉编译zlib