Android Studio:如何在build.gradle中定义自定义宏(针对不同的构建变体),并让原生C / C++
Android Studio: How to define custom macros in build.gradle (for different build variants) and let native C/C++ code detect them?
我需要在Android Studiobuild.gradle文件中定义一些自定义宏,例如">DEBUG",">RELEASE",">DEMO_VER"和">FULL_VER",以便我的C/C++代码可以检测到它们,例如:
#ifdef DEBUG
...
#else //RELEASE
...
#endif
或
#ifdef DEMO_VER
...
#else //FULL_VER
...
#endif
我的理解是,这些宏应该定义为构建变体块中的 g++ 编译器选项,如以下代码:
buildTypes
{
release
{
cmake <<====== Error!!!!!: could not find method cmake() for ...BuildType
{
cppFlags += "-DRELEASE"
}
}
debug
{
cmake <<====== Error!!!!!: could not find method cmake() for ...BuildType
{
cppFlags += "-DDEBUG"
}
}
}
flavorDimensions "version"
productFlavors
{
demo
{
cmake <<====== Error!!!!!: could not find method cmake() for ...ProductFlavor
{
cppFlags += "-DEMO_VER"
}
}
full
{
cmake <<====== Error!!!!!: could not find method cmake() for ...ProductFlavor
{
cppFlags += "-DFULL_VER"
}
}
}
问题是我不能在">BuildType"或"ProductFlavor"中使用">cmake",找不到该方法。 那么,为不同的产品风格/构建类型传递编译器宏的正确方法是什么?
自己找到答案: "cmake" 方法属于类 "externalNativeBuild"类,因此需要嵌入到 "externalNativeBuild" 块中,如下所示:
release
{
externalNativeBuild
{
cmake
{
cppFlags += "-DRELEASE"
}
}
...
}
现在,build.gradle中定义的所有预处理器都传递到 C/C++ 编译器中。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 无法在 CLion 中构建 C++ 项目
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用ndk-build.cmd构建Android.so文件
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 构建一个由C和C++文件组成的库
- llvm构建器向基本块添加终止符
- FLTK 2.0构建和演示,适用于VS2019的2011年左右的代码库
- 如何跨平台将二进制资源构建到程序中?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 如何解决 Ninja c++ 构建和执行问题
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- CMake WxWidgets项目成功地在Linux上构建,但没有在Windows上构建
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 用CMake构建C++协议
- Mingw-64 在构建和安装后不会编译 openCV 代码