2012-06-15 3 views
0

я пишущий инструментchain.cmake файл для Linaro toolchain.Cmake cross compile flags

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> 

Но во время компиляции, я была ошибка об исключениях, вместо определенных флагов компилятора в ToolChain файле:

error: exception handling disabled, use -fexceptions to enable 

Насколько я могу понять мой CMAKE_C_FLAGS_RELEASE, CMAKE_CXX_FLAGS_RELEASE не имеет никакого эффекта. Зачем?

+0

Добро пожаловать в переполнение стека! Если вы нашли ответ на свой вопрос, вы можете ответить на него сами и пометить его как принятый, чтобы другие могли знать, что этот вопрос разрешен. –

+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 был отклонен).

 Смежные вопросы

  • Нет связанных вопросов^_^