格式:
if(expression) # then section. COMMAND1(ARGS ...) COMMAND2(ARGS ...) ... elseif(expression2) # elseif section. COMMAND1(ARGS ...) COMMAND2(ARGS ...) ... else() # else section. COMMAND1(ARGS ...) COMMAND2(ARGS ...) ... endif()
例子:
if(" ${CMAKE_SOURCE_DIR}" STREQUAL " ${CMAKE_BINARY_DIR}") message(FATAL_ERROR " FATAL: In-source builds are not allowed. You should create a separate directory for build files. ") endif()
STREQUAL 是 CMAKE 的關鍵字,用於字符串比較,相同返回 true
${CMAKE_SOURCE_DIR} 是 CMAKE 的自保留變量(拿來用就可以,含義已經確定),文件路徑
${CMAKE_BINARY_DIR}是輸出路徑
關系操作符
NOT | 非,NOT E1 |
AND | 與,E1 AND E2 |
OR | 或,E1 OR E2 |
EXIST | ~ E,存在 name 的文件或者目錄(應該使用絕對路徑),真 |
COMMAND | ~ E,存在 command-name 命令、宏或函數且能夠被調用,真 |
DEFINED | ~ E,變量被定義了,真 |
EQUAL | E1 ~ E2,變量值或者字符串匹配 regex 正則表達式 |
LESS | |
GREATER | |
STRLESS | E1 ~ E2,變量值或者字符串為有效的數字且滿足小於(大於、等於)的條件 |
STRGREATER | |
STREQUAL |