在 CMAKE 中包含来自 Android 项目的不同文件夹的静态库
Posted
技术标签:
【中文标题】在 CMAKE 中包含来自 Android 项目的不同文件夹的静态库【英文标题】:Including a static library in CMAKE from a different folder for an Android Project 【发布时间】:2019-01-23 00:05:19 【问题描述】:我正在尝试将我的 android NDK cpp 项目(带有 Android.mk 的 ndk-build)转换为 Android Studio 中的 CMAKE。我有一个这样的项目层次结构:
.
├── Module1
│ ├── CMakeLists.txt
│ ├── include
│ │ └── Module1
│ ├── libModule1
│ │ ├── Module1File1.cpp
│ │ └── Module1File2.cpp
│ └── utModule1
├── MyProject
│ ├── CMakeLists.txt
│ ├── MyProject.iml
│ ├── build
│ │ ├── generated
│ │ ├── intermediates
│ │ └── outputs
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │
│ ├── MyProjectFile1.cpp
│ └── MyProjectFile2.cpp
|
└── settings.gradle
Module1 CMakeLists.txt:
cmake_minimum_required(VERSION 3.4.1)
add_library( # Specifies the name of the library.
Module1
# Sets the library as a shared library.
STATIC
# Provides a relative path to your source file(s).
libModule1/Module1File1.cpp
libModule1/Module1File2.cpp )
MyProject CMakeLists.txt:
cmake_minimum_required(VERSION 3.4.1)
add_subdirectory(../MyModule1)
add_library( # Specifies the name of the library.
MyProject
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/MyProjectFile1.cpp
src/MyProjectFile2.cpp)
target_link_libraries( # Specifies the target library.
MyProject
# Dependencies
MyModule1
# Links the target library to the log library
# included in the NDK.
$log-lib)
我在构建时看到以下错误:
CMake Error at CMakeLists.txt (add_subdirectory):
如何将 MyModule1 包含到 MyProject 中?
【问题讨论】:
Possible duplicate of 您忘记在问题帖子中包含其余的错误消息。 【参考方案1】:建议的修复来自:
Add a dependency not in a subdirectory using CMake
为我工作。
include_directories(../MyMModule1/include/)
add_subdirectory("../MyMModule1/" "$CMAKE_CURRENT_BINARY_DIR/MyModule1_build")
【讨论】:
以上是关于在 CMAKE 中包含来自 Android 项目的不同文件夹的静态库的主要内容,如果未能解决你的问题,请参考以下文章