gpt4 book ai didi

android - 如何传递特定参数(例如 : opencv_dir) to CMake through gradle externaNativeTool?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:46 25 4
gpt4 key购买 nike

我正在尝试在 Android Studio 中将 CMake 脚本作为具有 OpenCV 依赖项的 externalNativeBuildTool 执行。

我知道我可以在脚本中静态定义 OpenCV 并且我不想使用 OpenCV 管理器或插件到 android studio。我只想传递 Opencv_dir 参数以避免将所有 header 和库复制到项目中。

所以,总而言之,我有这个错误:

 Could not find a package configuration file provided by "OpenCV" with   any  of the following names:
OpenCVConfig.cmake
opencv-config.cmake

我正在寻找如下解决方案:

https://developer.android.com/ndk/guides/cmake.html#build-command .

但是这些论点并不满足,我试着把 Opencv_dir 放成这样:

externalNativeBuild {
cmake {
cppFlags "-std=c++11 -fno-rtti -fexceptions "
arguments "-DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=18
-DOpenCV_DIR="+getOpenCVDir().toString()

}
}
def getOpenCVDir() {
Properties properties = new Properties()
properties.load(new File(rootDir.absolutePath + "/local.properties").newDataInputStream())
def externalModuleDir = properties.getProperty('opencv.dir', null)
if (externalModuleDir == null) {
throw new GradleException(
"OpenCV location not found. Define location with opencv.dir in the local.properties file!")
}
return externalModuleDir
}

opencvdir 在本地属性上定义

opencv.dir={my_sdk_path}/OpenCV-android-sdk/sdk/native/jni

那么有什么方法可以通过gradle将自定义参数传递给cmake吗?

提前致谢。

最佳答案

我找到了解决方案,有一个拼写错误:

有必要将 CMake 标志作为列表。

之前:

 externalNativeBuild {
cmake {
cppFlags "-std=c++11 -fno-rtti -fexceptions "
arguments "-DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=18
-DOpenCV_DIR="+getOpenCVDir().toString()

}
}

之后:

 externalNativeBuild {
cmake {
arguments "-DANDROID_ARM_NEON=TRUE",
"-DOpenCV_DIR="+getOpenCVDir()

cppFlags "-std=c++11 -fno-rtti -fno-exceptions -fpermissive"
}
}

现在它可以完美运行并且可以检测到 opencv_dir。

关于android - 如何传递特定参数(例如 : opencv_dir) to CMake through gradle externaNativeTool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42715120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com