cmake 學習之路 記錄中間所遇到過的所有錯誤與問題的解決

CMAKE_BUILD_TYPE  宏匹配問題:


錯誤代碼:

    # Linux operation system
    IF (CMAKE_BUILD_TYPE MATCHES "Debug" 
            OR CMAKE_BUILD_TYPE MATCHES "None"
            OR CMAKE_BUILD_TYPE MATCHES "")
        ADD_DEFINITIONS(-D _DEBUG_CDB)
        ADD_DEFINITIONS(-D DEBUG)
    ELSEIF (CMAKE_BUILD_TYPE MATCHES "Release")
    ELSEIF (CMAKE_BUILD_TYPE MATCHES "RelWitchDebInfo")
    ELSEIF (CMAKE_BUILD_TYPE MATCHES "MinSizeRel")
    ELSE ()
        MESSAGE(FATAL_ERROR "unknown CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE},"
                " CMAKE_BUILD_TYPE: Debug or None, Release, RelWitchDebInfo,"
                " RelWitchDebInfo")
    ENDIF ()

正確代碼:

    # Linux operation system
    IF (CMAKE_BUILD_TYPE MATCHES "Debug" 
            OR CMAKE_BUILD_TYPE MATCHES "None")
        ADD_DEFINITIONS(-D _DEBUG_CDB)
        ADD_DEFINITIONS(-D DEBUG)
    ELSEIF (CMAKE_BUILD_TYPE MATCHES "Release")
    ELSEIF (CMAKE_BUILD_TYPE MATCHES "RelWitchDebInfo")
    ELSEIF (CMAKE_BUILD_TYPE MATCHES "MinSizeRel")
    ELSE ()
        MESSAGE(FATAL_ERROR "unknown CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE},"
                " CMAKE_BUILD_TYPE: Debug or None, Release, RelWitchDebInfo,"
                " RelWitchDebInfo")
    ENDIF ()

如果你夠仔細的話應該不難發現兩者的差別僅僅是一行  CMAKE_BUILD_TYPE MATCHES "" 而以,我用的時候以爲這個是匹配未定義呢,結果不是。未定義的時候該值爲"None"   如果只給一個"" 那麼它會匹配所有




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章