代码之家  ›  专栏  ›  技术社区  ›  user

为什么(定义的<variable>)在cmake中不起作用?[副本]

  •  0
  • user  · 技术社区  · 7 年前

    这个问题已经有了答案:

    根据CMake文件 if 关键字:

    if(DEFINED <variable>)

    如果定义了给定变量,则为True。变量是否为真或假并不重要,只要变量已设置。(注意宏参数不是变量。)

    我有一个小的CMakeLists.txt:

    cmake_minimum_required(VERSION 2.6)
    project(abc)
    message("CMAKE_CXX_FLAGS_DEBUG 1: ${CMAKE_CXX_FLAGS_DEBUG}")
    if(DEFINED ${CMAKE_CXX_FLAGS_DEBUG})
    message("CMAKE_CXX_FLAGS_DEBUG 2: ${CMAKE_CXX_FLAGS_DEBUG}")
    endif(DEFINED ${CMAKE_CXX_FLAGS_DEBUG})
    message("CMAKE_CXX_FLAGS_DEBUG 3: ${CMAKE_CXX_FLAGS_DEBUG}")
    

    下一个输出 cmake path/to/CMakeLists.txt 调用:

    CMAKE_CXX_FLAGS_DEBUG 1: -g
    CMAKE_CXX_FLAGS_DEBUG 3: -g
    -- Configuring done
    -- Generating done
    -- Build files have been written to: current/dir
    

    第二条线在哪里?

    CMAKE_CXX_FLAGS_DEBUG 2: -g
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   John    7 年前

    使用 if(DEFINED <variable>) if(DEFINED ${<variable>}) . 换句话说,直接使用变量名,不要在 if (除非它包含另一个变量的名称,这是您真正想要测试的)。

    推荐文章