CMake构建NDK项目提示asm/types.h找不到

Posted zjutzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMake构建NDK项目提示asm/types.h找不到相关的知识,希望对你有一定的参考价值。

用CMake构建NDK项目时,会传入toolchain的cmake脚本文件android.toolchain.cmake给CMake。这个文件中会做若干设定,其中就包括include路径。

我遇到的情况是,自己手动修改CMAKE_C_FLAGSCMAKE_CXX_FLAGS时,覆盖了它们原有的(android.toolchain.cmake修改后的)值,导致asm/types.h找不到。

我的错误设定:

set(CMAKE_C_FLAGS "${MY_CMAKE_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${MY_CMAKE_CXX_FLAGS}")

正确做法应该是追加内容而非修改:

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MY_CMAKE_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_CMAKE_CXX_FLAGS}")

P.S. 排查方法:由于我是基于ninja构建的(cmake+ndk的组合下,现在通常用ninja),通过对比”能正常构建的工程“和”提示asm/types.h找不到的工程“之间${CMAKE_BINARY_DIR}目录下的rules.ninjabuild.ninja来发现问题所在。

以上是关于CMake构建NDK项目提示asm/types.h找不到的主要内容,如果未能解决你的问题,请参考以下文章

Android NDK——必知必会之Android Studio使用CMake构建NDK项目的背后的故事

Android NDK——必知必会之Android Studio使用CMake构建NDK项目的背后的故事

Android NDK开发CMake构建工具使用

TravisCI中的NDK,CMake和Android

AndroidStudio2.2 Preview3中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别(转载)

初探ndk的世界