【问题标题】:How do I perform "Build/Refresh Linked C++ Projects" from command line?如何从命令行执行“构建/刷新链接的 C++ 项目”?
【发布时间】:2019-08-04 10:18:37
【问题描述】:

我有一个Android/NDK 应用程序和一个使用gradlew.bat 自动构建/安装的构建脚本。

build.gradle 在内部使用 CMakeLists.txtGLOB_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


【解决方案1】:

解决方法是在执行其他任务之前删除您的 CMakeCache.txt。这将强制 CMake 重新生成构建文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    相关资源
    最近更新 更多