NDK项目构建多个cmakefiles.txt
我的目的是将libprebuilt.so和libmylib.So内置在APK中。 构造
|-mylib_prebuilts
| |-libprebuilt.so
| |-include_dir
| '-CMakeFiles.txt
|-mylib
| |-src
| '-CMakeFiles.txt
'-build.gradle
我的项目在cmakefiles.txt中为mylib_prebuilts
add_library(prebuiltlib SHARED IMPORTED)
target_include_directories(prebuiltlib INTERFACE include_dir)
set_property(TARGET prebuiltlib PROPERTY IMPORTED_LOCATION libprebuilt.so)
,我有以下内容。在lib的cmakefiles.txt中,我有以下
add_subdirectory(../mylib_prebuilts mylib_prebuilts)
add_library(mylib SHARED ${srcs})
target_link_libraries(mylib PUBLIC prebuiltlib)
root gradle.build具有以下内容,
externalNativeBuild {
cmake {
version '3.18.1'
path 'mylib/CMakeLists.txt'
}
}
我无法从Mylib到达预构建的标题或库。我会收到“找不到标题”错误,或者使用include_directories(../ mylib_prebuilts/include_dir)
手动添加标题路径,则构建在链接时找不到符号。
My intent is to have prebuilt libprebuilt.so and libmylib.so built into the apk. My project is structured like this
|-mylib_prebuilts
| |-libprebuilt.so
| |-include_dir
| '-CMakeFiles.txt
|-mylib
| |-src
| '-CMakeFiles.txt
'-build.gradle
In the CMakeFiles.txt for mylib_prebuilts, I have the following.
add_library(prebuiltlib SHARED IMPORTED)
target_include_directories(prebuiltlib INTERFACE include_dir)
set_property(TARGET prebuiltlib PROPERTY IMPORTED_LOCATION libprebuilt.so)
In the CMakeFiles.txt for lib, I have the following
add_subdirectory(../mylib_prebuilts mylib_prebuilts)
add_library(mylib SHARED ${srcs})
target_link_libraries(mylib PUBLIC prebuiltlib)
The root gradle.build has the following
externalNativeBuild {
cmake {
version '3.18.1'
path 'mylib/CMakeLists.txt'
}
}
I cannot reach the prebuilt headers or library from mylib. I get "headers not found" error, or if I manually add the header path using include_directories(../mylib_prebuilts/include_dir)
, build cannot find symbols when linking.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
用我偶然发现的解决方案回答我自己的问题。
mylib_prebuilts/cmakelists.txt必须包含以下更改。
全局
关键字添加到add_library调用。使用
$ {make_current_source_dir}
set_property调用的相对呼叫多变的
Answering my own question with a solution I stumbled upon.
mylib_prebuilts/CMakeLists.txt has to contain the following changes.
GLOBAL
keyword to add_library call.of relative for set_property call using
${MAKE_CURRENT_SOURCE_DIR}
variable