2012-06-15 140 views
0

我爲Linaro toolchain編寫toolchain.cmake文件。在工具鏈文件Cmake交叉編譯標誌

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

但是在編譯的時候,我對異常的錯誤,而不是定義編譯器的標誌:

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

error: exception handling disabled, use -fexceptions to enable 

至於我能瞭解我的CMAKE_C_FLAGS_RELEASE,CMAKE_CXX_FLAGS_RELEASE沒有任何作用。爲什麼?

+0

歡迎來到Stack Overflow!如果你已經找到自己問題的答案,你可以自己回答並將其標記爲已接受,以便其他人可以知道此問題已解決 –

+0

謝謝!但你自己的答案有6小時的限制。 – exbluesbreaker

+0

請勿設置['CMAKE_CROSSCOMPILING'](https://cmake.org/cmake/help/v3.0/variable/CMAKE_CROSSCOMPILING.html#variable:CMAKE_CROSSCOMPILING)。它由CMake設置。請參閱參考文檔。 – kyb

回答

2

問題解決了,我的錯誤。我在主項目中使用set(CMAKE_CXX_FLAGS "<flags>")set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}<flags>"。我很困惑,因爲這個CMakeLists.txt適用於android-cmake和Google-NDK(而不是所有的android-cmake工具鏈標誌都被拒絕了)。