Я создаю приложение для Android с файлами Java и C ++.
Я использую CMake для компиляции своего кода C ++ в общую библиотеку.Мой файл CMake использует некоторый кроссплатформенный код из нашей основной платформы.
Проблема в том, что по какой-то причине Android Studio генерирует ошибочные включения в исходные каталоги.Я думаю, что это из-за файла CMake, так как это единственное место, где я ссылаюсь на весь каталог.
Основная проблема заключается в том, что
<sourceFolder url="file://$MODULE_DIR$/../../../../../../../PLATFORM/src"
добавляет эту папку (и все, что находится под ней) в качестве исходной папки JAVA, которая включает в себя все виды материалов, которые я не хочу включать.Я только хочу, чтобы CMake имел доступ к этим папкам при компиляции библиотеки C ++.Мои файлы .java копируются в соответствии с решением dir.
Любые идеи о том, как предотвратить включение источников .java извне решения?
CMakeLists.txt (используется для компиляции библиотеки c ++)
file(GLOB src_platform "../../../../../../../../../../PLATFORM/src/platform.cpp")
file(GLOB_RECURSE src_jpeg "../../../../../../../../../../PLATFORM/src/ext/jpeg/*.c")
file(GLOB_RECURSE src_png "../../../../../../../../../../PLATFORM/src/ext/png/*.c")
add_library( # Sets the name of the library.
native-library
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
${src_platform}
${src_jpeg}
${src_png})
файл app.iml (файл решения IDEA, созданный и используемый Android Studio)
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$/../../../../../../../PLATFORM/src">
<sourceFolder url="file://$MODULE_DIR$/../../../../../../../PLATFORM/src" isTestSource="false" />
</content>
[...]
</component>