【问题标题】:How do I set a Preprocessor Definition in Gradle如何在 Gradle 中设置预处理器定义
【发布时间】:2016-12-22 14:01:31
【问题描述】:

如果这是重复的,我深表歉意,但是我该如何定义预处理器定义。在 Visual Studio 中,我可以转到 C++ -> Preprocessor 并在那里设置定义列表。但我在我的 Android gradle 版本中遇到了这个问题。

我需要定义DEBUG,以满足以下条件

#if (!defined(NDEBUG)) && (!defined(DEBUG))

我尝试添加 -DDEBUG,但这似乎不起作用。我一直在努力寻找关于需要做什么的文档。

    cppFlags.addAll(["-fexceptions", "-std=gnu++11", "-DDEBUG"])

这是我的 NDK 构建块 // 定义 NDK 构建 ndk { 模块名称“我的模块”

        toolchain = "clang"

        // If switching to GNU, here are the values to replace with
        stl "gnustl_shared"
        cppFlags.addAll(["-fexceptions", "-std=gnu++11", "-DDEBUG"])


        // when adding system library dependencies, they are added here
        ldLibs.addAll(["log","atomic"])

        // C include directories
        CFlags.addAll(["-I${file("src/main/jni/folder1")}".toString(),
                       "-I${file("src/main/jni/folder2")}".toString()
        ])

        // C++ include directories
        cppFlags.addAll(["-I${file("src/main/jni/morestuff")}".toString(),
        ])
    }

【问题讨论】:

  • 您好,很高兴知道您解决了问题。我有一个关于在 gradle 中定义编译器预处理器的类似问题,但我仍在努力寻找答案。不知道你能不能得到答案?这是我的问题链接:stackoverflow.com/questions/52860467/…

标签: android android-ndk android-gradle-plugin


【解决方案1】:

您似乎同时设置了CFlagscppFlags。您确定将 DEBUG 标志添加到正确的标志吗?如果您正在处理一个共享库,它可能需要您在 CFlags 而不是 cppFlags 中的标志。

我会尝试将您的 DEBUG 标志添加到 CFlags,看看是否可行:

CFlags.addAll(["-DDEBUG"])

【讨论】:

  • 感谢您的快速回复,这正是我做错了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 2010-09-26
  • 2020-06-20
相关资源
最近更新 更多