在使用Android.mk文件时,我可以将这些文件编译/链接到我的项目中,但在使用cmake时,我遇到了编译器错误,如下所示:
lib\arm_android\armfrag.s:1:2: error: unexpected token at start of statement @******************************************************************** ^ libs\arm_android\armfrag.s:2:2: error: unexpected token at start of statement @* * ^
armfrag文件顶部有一些注释,例如:
@******************************************************************** @* * @* THIS FILE IS ...................................................................................
从这里我认为我的cmake无法读取这些汇编文件,但是注释并不是唯一的问题,因为我删除了注释后仍然会收到错误消息。
我的cmake看起来像这样:
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.mk文件中可以正常工作吗?
干杯
* 添加 *
使用详细模式,我会得到相同的错误,但还会添加以下内容:
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'
* Added modified cmake file *
cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_VERBOSE_MAKEFILE on)
set(can_use_assembler TRUE)
enable_language(ASM)
add_definitions(-v -DANDROID -DNDEBUG -DOC_ARM_ASM)
if(CMAKE_SYSTEM_PROCESSOR STREQUAL armv7-a)
set(TEST_SOURCES ../../../../libs/lib/arm_android/armbits.s
../../../../libs/arm_android/armfrag.s
../../../../libs/arm_android/armidct.s
../../../../libs/arm_android/armloop.s
../../../../libs/lib/arm/armopts-gnu.s
)
endif()
add_library(omnitus STATIC ${TEST_SOURCES}
)
target_include_directories(omnitus PUBLIC
../../../../libs/include
)
target_include_directories(omnitus PUBLIC
../../../../libs/arm
)
target_include_directories(omnitus PUBLIC
../../../../libs/include
)
x86_64-unknown-linux
)。你是否尝试根据CMAKE_SYSTEM_PROCESSOR
有条件地添加汇编源,就像这个例子中所示的那样? - Michael