在 CMAKE 中包含来自 Android 项目不同文件夹的静态库

Including a static library in CMAKE from a different folder for an Android Project

本文关键字:文件夹 静态 项目 Android CMAKE 包含      更新时间:2023-10-16

我正在尝试将我的Android NDK cpp项目(ndk-build with Android.mk)转换为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

模块 1 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 中?

建议修复自:

使用 CMake 添加不在子目录中的依赖项

为我工作。

include_directories(../MyMModule1/include/)
add_subdirectory("../MyMModule1/" "${CMAKE_CURRENT_BINARY_DIR}/MyModule1_build")