gpt4 book ai didi

android - CMake IF 条件返回错误结果

转载 作者:行者123 更新时间:2023-11-28 04:46:42 24 4
gpt4 key购买 nike

我正在尝试为 android 构建 native 库,我需要执行条件编译。所以我的 CMakeLists.txt 文件中有以下代码

#set (TEST_VAL OFF) #uncomment this to force set this value
option(TEST_VAL "Test my value")
if(NOT ${TEST_VAL} EQUAL OFF)
message(WARNING "TEST MY VAL IS NOT EQUAL OFF ACTUAL VALUE: ${DISABLE_SSE} ")
else ()
message(WARNING "TEST MY VAL IS ON ACTUAL VALUE: ${DISABLE_SSE} ")
endif()

如您所见,我正在尝试获取选项值并编译库。

这就是我提供这个选项(build.gradle)文件的方式。

android {
...
defaultConfig {
...
externalNativeBuild {
cmake {
// Passes optional arguments to CMake.
arguments "-DTEST_VAL=OFF"
}
}

...
}

但在我的输出中我只看到:

CMake Warning at CMakeLists.txt:35 (message): TEST MY VAL IS NOT EQUAL OFF ACTUAL VALUE: OFF

那么 OFF 值怎么可能不等于 OFF 呢?我做错了什么。

非常感谢。

最佳答案

EQUAL 运算符“如果给定的字符串或变量的值是有效数字并且等于右边的数字,则为真。”

所以只需执行 if (NOT TEST_VAL),因为如果常量为 1、ON、YES、TRUE、Y 或非零数字,则仅给出变量名称就是“真”。

如果您无法更改代码或提出问题......

我已经运行了一些测试并且以下确实有效:

set(TEST_VAL OFF)
set(OFF 0)

if(NOT ${TEST_VAL} EQUAL OFF)
message(STATUS "NOT \${TEST_VAL} EQUAL OFF")
endif()

由于 EQUAL 需要一个数字进行比较,您可以将字符串 OFF 定义为 0

因此,在您的示例中,这等同于 arguments "-DTEST_VAL=OFF -DOFF=0"

引用

关于android - CMake IF 条件返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49135073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com