function(suported_compilers)if("${CMAKE_CXX_COMPILER_ID}"MATCHES"GNU")execute_process( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)if(NOT(GCC_VERSION VERSION_GREATER4.7OR GCC_VERSION VERSION_EQUAL4.7))message(FATAL_ERROR"${PROJECT_NAME} requires g++ 4.7 or greater."...
cmake if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") MESSAGE("Clang") elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") MESSAGE("GNU") elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") MESSAGE("Intel") elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") MESSAGE("...
一元逻辑操作符:NOT 二元逻辑操作符:AND,OR 10.1 基础表达式 if(<constant>) 真值:1, ON, YES, TRUE, Y, 非0数字(浮点数也行) 假值:0, OFF, NO, FALSE, N, IGNORE, NOTFOUND, 空字符串,以-NOTFOUND结尾 如果不是上述值,则被当成变量或者字符串 if(<variable>) 如果variable的值是真值,那么判断条...
复制 #settargetif(NOTYOUR_TARGET_OS)set(YOUR_TARGET_OSlinux)endif()if(NOTYOUR_TARGET_ARCH)set(YOUR_TARGET_ARCHx86_64)endif()if(NOTYOUR_BUILD_TYPE)set(YOUR_BUILD_TYPERelease)endif()...if(${YOUR_TARGET_ARCH}MATCHES"(arm*)|(aarch64)")...elseif(${YOUR_TARGET_ARCH}MATCHESx86*)... ...
IF (DEFINED var) 如果变量被定义,为真; IF (var MATCHES regex) 此处var可以用var名,也可以用${var}; IF (string MATCHES regex) 当给定变量或字符串能匹配正则表达式regex时,为真; 例: IF ("hello" MATCHES "ell")MESSAGE("true")ENDIF ("hello" MATCHES "ell") ...
if (IS_DIRECTORY dir):当 dir 是目录时为真 if (DEFINED var):如果变量被定义为真 if (var MATCHES regex):给定的变量或者字符串能够匹配正则表达式 regex 时为真,此处 var 可以用 var 名,也可以用 ${var} if (string MATCHES regex) 数字比较: if (variable LESS number):LESS 小于if (string LESS ...
IF(EXISTS dir)或者 IF(EXISTS file)#当目录名或者文件名存在时为真。 IF(file1 IS_NEWER_THAN file2)#当 file1 比 file2 新,或者 file1/file2 其中有一个不存在时为真,文件名请使用完整路径。 IF(IS_DIRECTORY dirname)#当 dirname 是目录时,为真。 IF(variable MATCHES regex) IF(string MATCHES ...
指定参数的cmake 命令 cmake -DBuild_DEBUG=OFF -P if_option.cmake;输出 -- VAR2 IS tru 2 ON 流程和循环语句 cmake语法树里面也有自己的流程控制语句。 IF语句,它的格式为: if(expression) COMMAND1(ARGS ...) COMMAND2(ARGS ...) elseif([expression2]) ...
if (NOT UIKIT_LIBRARY) message(STATUS "UIKit.framework NOT found!") else() message(STATUS "UIKit.framework found! ${UIKIT_LIBRARY}") endif() # Hook up XCTest for the supported plaforms (all but WatchOS) if(NOT PLATFORM MATCHES ".*WATCHOS.*") ...
可以有多个ELSEIF子句。注意,在else和elseif子句中的表达式也是可选的。判断条件可以用长表达式,并且表达式有约定的优先级顺序。括号中的表达式会首先被调用;然后是一元运算符,比如EXISTS,COMMAND以及DEFINED;然后是EQUAL,LESS,GREATER,STRLESS,STRGREATER,STREQUAL,MATCHES;然后是NOT运算符,最后是AND,OR运算符。几种...