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_FLAGS
和CMAKE_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.ninja
和build.ninja
来发现问题所在。
以上是关于CMake构建NDK项目提示asm/types.h找不到的主要内容,如果未能解决你的问题,请参考以下文章
Android NDK——必知必会之Android Studio使用CMake构建NDK项目的背后的故事
Android NDK——必知必会之Android Studio使用CMake构建NDK项目的背后的故事
AndroidStudio2.2 Preview3中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别(转载)