【发布时间】:2019-08-04 10:18:37
【问题描述】:
我有一个Android/NDK 应用程序和一个使用gradlew.bat 自动构建/安装的构建脚本。
build.gradle 在内部使用 CMakeLists.txt 和 GLOB_RECURSE 来构建 C++ 文件。但是,如果我将一个新的.cpp 文件添加到我的 C++ 源代码目录中,我必须手动启动 Android Studio 并运行"Build/Refresh Linked C++ Projects",否则构建脚本将不会拾取添加的.cpp 文件并且我得到链接器错误。
我想让 buildscript 执行 "Refresh Linked C++ Projects" 操作,但我找不到执行此操作的 Gradle 任务。
有谁知道我如何从命令行执行此操作,无论是否使用 Gradle?
【问题讨论】:
-
刷新 CMake 最简单的方法是在运行 gradlew 之前删除
.externalNativeBuild目录。您可以将此类操作作为自定义clean任务添加到 build.gradle。 -
每次构建时都会强制重建所有内容,难道不能只刷新列表吗? (也许删除 build.ninja 或 android_gradle_build.json)
-
请注意,对于较新的插件,目录名为
.cxx而不是.externalNativeBuild -
"Refresh Linked C++ Projects" 正是这样做的:完全重新编译。但是您不需要每次构建时都刷新列表。仅在必要时运行此自定义
clean任务。通常,如果您添加 cpp 文件,您需要更改一些其他代码来调用它们。因此,CMake 将失败,因为它没有刷新的文件列表。这意味着是时候运行clean了。 -
@ViktorSehr 你找到解决方案了吗?
标签: android android-studio android-ndk android-gradle-plugin gradlew