CMake IF条件返回错误的结果

时间:2018-03-06 15:57:28

标签: android c++ cmake android-ndk

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

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

   ...
}

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

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

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

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

        sb.draw(gameoverImg, cam.position.x - gameoverImg.getWidth() / 2, cam.position.y + 95);
        sb.draw(table, cam.position.x - table.getWidth() / 2 + 33, cam.position.y - 180);


        font.getData().setScale(0.25f);
        font.draw(sb, "" + currentHighScore, cam.position.x + 30, FlappyDemo2.HEIGHT / 2 - 200);
        font.draw(sb, "" + score, cam.position.x + 30, FlappyDemo2.HEIGHT / 2 - 159);




        myTextureRegion = new TextureRegion(playBtn2);
        myTexRegionDrawable = new TextureRegionDrawable(myTextureRegion);
        button = new ImageButton(myTexRegionDrawable); //Set the button up
        button.setPosition(253/2, 112);
        stage = new Stage(new ScreenViewport()); //Set up a stage for the ui
        stage.addActor(button); //Add the button to the stage to perform rendering and take input.


        myTextureRegion2 = new TextureRegion(scoreBtn);
        myTexRegionDrawable2 = new TextureRegionDrawable(myTextureRegion2);
        button2 = new ImageButton(myTexRegionDrawable2); //Set the button up
        button2.setPosition(345, 185);
        stage.addActor(button2);

那么如果OFF值不等于OFF呢? 我做错了什么。

非常感谢。

1 个答案:

答案 0 :(得分:1)

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

所以只做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"

<强>参考