首页 > 解决方案 > cmake 何时不为链接目录生成“-L”标志?

问题描述

这是一个简化的 CMakeLists.txt,我用它来交叉编译 Android 的共享库。

cmake_minimum_required(VERSION 3.10)
project(MyTest)
link_directories($ENV{ANDROID_PREBUILT}/gcc/linux-x86/arm/arm-linux-androideabi-4.9/lib/gcc/arm-linux-androideabi/4.9)
add_library(MyTest SHARED MyTest.cpp)

构建时,我得到的错误是:

xxx/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-ld:   
error: cannot find -lgcc

我看到我指定的链接目录确实有 libgcc.a 文件。

在详细模式下运行 make 会显示以下链接命令:

xxx/clang/host/linux-x86/clang-2690385/bin/clang++
  --target=arm-linux-androideabi
  --sysroot=xxx/ndk/current/platforms/android-23/arch-arm/usr
  -fPIC -O3 -DNDEBUG  -shared -Wl,-soname,libMyTest.so -o libMyTest.so
  CMakeFiles/MyTest.dir/MyTest.cpp.o

似乎-Lcmake 没有生成标志。

如果我直接使用标志运行上述命令-L,则链接正常,并且确实创建了共享库。

有人可以告诉我我错过了什么吗?

更新:

我也尝试过导出LIBRARY_PATHLDFLAGS但两者都被忽略了。

标签: androidcmakecross-compiling

解决方案


推荐阅读