Android NDK cmake编译程序集(* .s)文件

时间:2016-11-09 12:38:47

标签: android assembly android-ndk cmake

我正在使用带有cmake和Android NDK的Android Studio 2.2.2。我有一个库,其中包含我为项目编译的几个.s(汇编程序)文件。

直到cmake,当我使用Android.mk文件时,我在编译/链接时没有任何问题,而在cmake上遇到编译错误,如:

  

lib \ arm_android \ armfrag.s:1:2:错误:语句开头的意外令牌     @ ******************* *******************      ^     libs \ arm_android \ armfrag.s:2:2:错误:语句开头的意外标记     @ * *      ^

顶部的armfrag文件包含注释:

  

@ ********************************************** **********************   @ * *   @ *这个文件是............................................. ......................................

我认为由此我的cmake无法读取这个汇编文件,但评论不是唯一的问题,因为我删除了评论,但仍然会出错。

我的cmake看起来像这样:

float8

有没有人知道为什么cmake失败并使用旧的Android.mk文件?

干杯

*已添加*

详细说明我得到的错误相同,但附加说明:

cmake_minimum_required(VERSION 3.4.1)

set(CMAKE_VERBOSE_MAKEFILE on)

set(can_use_assembler TRUE)
enable_language(ASM)

add_definitions(-DANDROID -DNDEBUG -DOC_ARM_ASM)

add_library(omnitus STATIC
    ../../../../libs/lib/arm_android/armbits.s 
    ../../../../libs/lib/arm_android/armfrag.s 
    ../../../../libs/lib/arm_android/armidct.s 
    ../../../../libs/lib/arm_android/armloop.s 
    ../../../../libs/lib/arm/armopts-gnu.s              
)

target_include_directories(omnitus PUBLIC
    ../../../../libs/include
)

target_include_directories(omnitus PUBLIC
    ../../../../libs/lib/arm
)

target_include_directories(omnitus PUBLIC
    ../../../../libs/include
)

*添加了修改过的cmake文件*

Android clang version 3.8.256229  (based on LLVM 3.8.256229)
Target: x86_64-unknown-linux
Thread model: posix
InstalledDir: C:\Android\sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin
clang.exe: warning: argument unused during compilation: '-D ANDROID'
clang.exe: warning: argument unused during compilation: '-D ARM'
clang.exe: warning: argument unused during compilation: '-D NDEBUG'
clang.exe: warning: argument unused during compilation: '-D OC_ARM_ASM'  
clang.exe: warning: argument unused during compilation: '-MD'
clang.exe: warning: argument unused during compilation: '-MT      CMakeFiles/omnitus.dir/lib/arm/armopts-gnu.s.o'
clang.exe: warning: argument unused during compilation: '-MF CMakeFiles\omnitus.dir\lib\arm\armopts-gnu.s.o.d'

1 个答案:

答案 0 :(得分:0)

到目前为止,对于ARMv7和ARMv8体系结构,您必须以内联汇编样式在C源文件中编写汇编代码。

Android Studio刚刚为x86和x86-64体系结构添加了YASM汇编程序。