Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android CMake项目依赖关系_Android_C++_Android Ndk_Cmake_Android Studio 2.2 - Fatal编程技术网

Android CMake项目依赖关系

Android CMake项目依赖关系,android,c++,android-ndk,cmake,android-studio-2.2,Android,C++,Android Ndk,Cmake,Android Studio 2.2,我目前使用CMake作为Android Studio的本机代码 我的项目设置如下所示: 模块A需要模块B,这些依赖关系对于java和本机代码都是正确的 我应该如何在模块A的CMake文件中引用模块B 您好, Geki我不太明白。你说“模块A需要模块B”。这是否意味着模块B是项目依赖项?如果是这样,依赖关系与CMake文件有什么关系?CMake文件仅适用于本机。因此,您在模块A的build.gradle中有gradle项目…,您必须在同一模块A的build.gradle中引用CMake文件。如果模

我目前使用CMake作为Android Studio的本机代码

我的项目设置如下所示:

模块A需要模块B,这些依赖关系对于java和本机代码都是正确的

我应该如何在模块A的CMake文件中引用模块B

您好,
Geki

我不太明白。你说“模块A需要模块B”。这是否意味着模块B是项目依赖项?如果是这样,依赖关系与CMake文件有什么关系?CMake文件仅适用于本机。因此,您在模块A的
build.gradle
中有
gradle项目…
,您必须在同一模块A的
build.gradle
中引用CMake文件。如果模块B只是一个库,它与它无关——模块a的本机代码直接调用模块B的本机代码?若情况并非如此,那个么在本机端,A并不依赖于B,所以无需担心。如果您确实有直接从A-native调用到B-native的代码,那么您应该将模块B的本机代码视为模块A本机代码的一部分,并让模块A的cmakelists.txt脚本包含它——最好避免这种方式。如果模块A-native和模块B-native共享了一些代码,可以创建一个静态库,让它们都使用它。谢谢您的帮助。我的模块A直接本地使用模块B代码。因此,目前我在模块A的CMakeLists中手动包含标题,并针对libmoduleb进行链接。因此,这包含在我的aar文件夹中。问题是Android Studio有一个竞争条件,因此我必须先构建模块B,然后才能(手动)构建模块a,而不会出现链接器错误。模块A还使用模块B的java文件。这些文件通过编译项目(“:B”)进行解析。我不知道如何修改A的CMakeLists来告诉它需要模块B的头和库。@Gerry我不希望IDE中有重复的代码。如果我将CMakeListsB.txt完全包含到CmakeListsA.txt中,我将拥有重复的libmoduleb.so文件。我想将A和B分开,但链接与B的构建结果相对应。@Geki,了解您的使用模型。这是一个需要解决的问题,我没有其他解决办法。我不确定我是否理解。你说“模块A需要模块B”。这是否意味着模块B是项目依赖项?如果是这样,依赖关系与CMake文件有什么关系?CMake文件仅适用于本机。因此,您在模块A的
build.gradle
中有
gradle项目…
,您必须在同一模块A的
build.gradle
中引用CMake文件。如果模块B只是一个库,它与它无关——模块a的本机代码直接调用模块B的本机代码?若情况并非如此,那个么在本机端,A并不依赖于B,所以无需担心。如果您确实有直接从A-native调用到B-native的代码,那么您应该将模块B的本机代码视为模块A本机代码的一部分,并让模块A的cmakelists.txt脚本包含它——最好避免这种方式。如果模块A-native和模块B-native共享了一些代码,可以创建一个静态库,让它们都使用它。谢谢您的帮助。我的模块A直接本地使用模块B代码。因此,目前我在模块A的CMakeLists中手动包含标题,并针对libmoduleb进行链接。因此,这包含在我的aar文件夹中。问题是Android Studio有一个竞争条件,因此我必须先构建模块B,然后才能(手动)构建模块a,而不会出现链接器错误。模块A还使用模块B的java文件。这些文件通过编译项目(“:B”)进行解析。我不知道如何修改A的CMakeLists来告诉它需要模块B的头和库。@Gerry我不希望IDE中有重复的代码。如果我将CMakeListsB.txt完全包含到CmakeListsA.txt中,我将拥有重复的libmoduleb.so文件。我想将A和B分开,但链接与B的构建结果相对应。@Geki,了解您的使用模型。这是一个需要解决的问题,我没有其他解决办法