gradle cmake在连接路径时添加意外的引号

Gradle + Cmake add unexpected Quotation marks when concatenate path

本文关键字:意外 添加 cmake 连接 路径 gradle      更新时间:2023-10-16

我正在将Android Studio与本机项目一起使用预编译的C 库。我使用gradle cmake将项目链接到包装器以调用图书馆

我在我的本地定义一个变量:

dependencies.common.dir="/home/vgonisanz/foo"

我的gradle.build致电cmake:

cmake {
    cppFlags ""
    arguments   "-DANDROID_ABI=armeabi-v7a",
                "-DDEPENDENCIES_COMMON_PATH=" + getCommonDir('dependencies.common.dir')
}
ndk {
    abiFilters "armeabi-v7a"
}

我的cmakelists.txt包含以下代码:

set(COMMON_INCLUDE_PATH "${DEPENDENCIES_COMMON_PATH}/modules/module_foo/include")
message("Using dependency path: ${DEPENDENCIES_COMMON_PATH}")
message("Using include path: ${COMMON_INCLUDE_PATH}")
include_directories(${COMMON_INCLUDE_PATH})

,但是当我构建库时,找不到$ {common_include_path}中的预期路径。该路径是正确的,如果是硬编码,则可以工作,因此我在文件app/.externalNativeBuild/cmake/debug/armeabi-v7a/cmake_build_output.txt

上检查CMAKE输出

,输出为:

Using dependency path: "/home/vgonisanz/foo"
Using include path: "/home/vgonisanz/foo"/modules/module_foo/include
Configuring done

问题在于,CMAKE变量在引号标记和打破构建之间。我通常会以这种方式使用CMAKE和变量,因此,为什么在Gradle环境中发生这种情况?

我可以在gradle中设置变量。build,但我想知道是否存在在cmakelists.txt中求解的方法,以避免以这种方式更改它。

呼叫此:

"-DDEPENDENCIES_COMMON_PATH=" + getCommonDir('dependencies.common.dir')

Gradle包括发送给CMAKE的句子的引号。您可以使用替换功能删除cmake中的引号。例如:

string(REPLACE """ "" DEPENDENCIES_COMMON_PATH ${DEPENDENCIES_COMMON_PATH})