如何在 add_subdirectory 函数中设置正确的目录路径?

How to set correct directory path in add_subdirectory function?

使用 Android Studio 并有两个库,Lib(A) 和 Lib(B),每个项目有两个 CMakeList.txt。

我想知道如何在 Lib(A) 中设置 add_subdirectory 因为在 运行 模式下无法检测 Lib(B) 中的功能,我猜 compiler/Gradle 会忽略Lib(B) 的 CMakelist。

库结构:

 A
 |--src
    |--main
       |--JAVA
       |--CPP
          |-CMakelist.txt
          |-...CPP

 B
 |--src
    |--main
       |--JAVA
       |--CPP
          |-CMakelist.txt
          |-...CPP

库(A) CMakelist:

cmake_minimum_required(VERSION 3.18.1)
project("A")
add_subdirectory("src/main/cpp/")
add_library(A
        SHARED
        a.cpp)

find_library(log-lib
             log )
target_link_libraries(Services
                   ${log-lib} )

库(B)CMakelist:

cmake_minimum_required(VERSION 3.18.1)
project("B")
add_library(B
        SHARED
        b.cpp)

find_library(log-lib
             log )

我测试了:

  add_subdirectory("src/main/cpp/")
  and
  add_subdirectory("com.myapp.B/src/main/cpp/")

但不起作用,错误是:

  CMake Error at CMakeLists.txt:3 (add_subdirectory):
  add_subdirectory given source "src/main/cpp/" which is not an existing
  directory.

add_subdirectory 的第一个参数采用包含要包含的 CMakeLists.txt 文件的目录的路径。如果此路径是相对路径,则相对于包含当前正在解析的 CMakeLists.txt 的目录进行解析。

如果指定导航到父目录的绝对路径或相对路径,则需要指定要用作第二个参数的构建目录。

add_subdirectory(../../../../B/src/main/CPP B_build)