# Note: VERSION_GREATER_EQUAL requires CMake 3.17
时间: 2024-09-21 19:05:35 浏览: 32
`VERSION_GREATER_EQUAL` 是 CMake 中的一个条件函数宏,它用于检查某个版本号是否大于等于指定的版本号。这个宏通常用于在构建配置文件中做版本依赖判断,比如只在特定的CMake版本以上启用某些新特性或模块。
当在 `if()` 或 `elseif()` 等条件语句中使用 `VERSION_GREATER_EQUAL`,你需要提供两个版本字符串,第一个是你想要比较的当前CMake版本,第二个是你希望达到或超过的目标版本。例如:
```cmake
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.17)
set(SUPPORTS_NEW_FEATURE true)
else()
message(WARNING "Your CMake version is less than 3.17; new feature not supported.")
endif()
```
这里,如果当前的CMake版本号是3.17或更高,则`SUPPORTS_NEW_FEATURE` 将被设置为`true`;反之,如果版本号低于3.17,会显示一个警告信息。
相关问题
再利用的物料事务有错:wip_greater_or_equal: 合计事务处理数量 必须大于或等于 0
再利用的物料事务有错:wip_greater_or_equal: 合计事务处理数量必须大于或等于0。这个错误提示表明,在进行再利用物料的事务处理时,合计处理数量必须是非负数。这是因为再利用物料的过程中,我们需要确保物料的数量不会减少到负数或零以下,以确保对生产和供应链流程的可持续性和效率。
这个错误提示的目的是提醒用户在处理再利用物料时要注意数量的准确性和合理性。如果合计事务处理数量小于0,可能会导致物料不足,进而影响生产计划和交付期限。因此,我们应该检查再利用物料的事务处理记录,确保数量的输入正确,并及时进行调整和纠错。
另外,这个错误提示还提醒了我们在再利用物料时要注意合理利用的原则。再利用物料是一种资源节约和可持续发展的做法,但我们不能过度依赖再利用物料,以至于无法保证生产的连续性和质量的稳定性。在进行再利用物料事务处理时,我们需要综合考虑生产需求、物料供应和质量控制等因素,确保再利用物料的使用是合理和可行的。
总之,再利用物料事务处理数量必须大于或等于0,这个错误提示提醒我们在进行再利用物料时要注意数量的准确性和合理性,保证生产的可持续性和效率。同时,我们也要注意再利用物料的合理利用原则,确保再利用物料的使用是可行和符合生产要求的。
解释:if(CUDA_FOUND) message(STATUS "Found CUDA Toolkit v${CUDA_VERSION_STRING}") enable_language(CUDA) set(HAVE_CUDA TRUE) if (CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA") if(${CUDA_VERSION_STRING} VERSION_GREATER_EQUAL "11.1") execute_process(COMMAND ${CMAKE_CUDA_COMPILER} --list-gpu-code RESULT_VARIABLE EXIT_CODE OUTPUT_VARIABLE OUTPUT_VAL) if(EXIT_CODE EQUAL 0) #Remove sm_ string(REPLACE "sm_" "" OUTPUT_VAL ${OUTPUT_VAL}) #Convert to list string(REPLACE "\n" ";" __CUDA_ARCH_BIN ${OUTPUT_VAL}) #Remove last empty entry list(REMOVE_AT __CUDA_ARCH_BIN -1) else() message(FATAL_ERROR "Failed to run NVCC to get list of GPU codes: ${EXIT_CODE}") endif() elseif(${CUDA_VERSION_STRING} VERSION_GREATER_EQUAL "11.0") set(__CUDA_ARCH_BIN "35;37;50;52;53;60;61;62;70;72;75;80") elseif(${CUDA_VERSION_STRING} VERSION_GREATER_EQUAL "10.0") set(__CUDA_ARCH_BIN "30;32;35;37;50;52;53;60;61;62;70;72;75") elseif(${CUDA_VERSION_STRING} VERSION_GREATER_EQUAL "9.1") set(__CUDA_ARCH_BIN "30;32;35;37;50;52;53;60;61;62;70;72") else() set(__CUDA_ARCH_BIN "30;32;35;37;50;52;53;60;61;62;70") endif() else() message(FATAL_ERROR "Unsupported CUDA compiler ${CMAKE_CUDA_COMPILER_ID}.") endif() set(CUDA_ARCH_BIN ${__CUDA_ARCH_BIN} CACHE STRING "Specify 'real' GPU architectures to build binaries for") if(POLICY CMP0104) cmake_policy(SET CMP0104 NEW) set(CMAKE_CUDA_ARCHITECTURES ${CUDA_ARCH_BIN}) message(STATUS "CMAKE_CUDA_ARCHITECTURES: ${CMAKE_CUDA_ARCHITECTURES}") #Add empty project as its not required with newer CMake add_library(pcl_cuda INTERFACE) else() # Generate SASS set(CMAKE_CUDA_ARCHITECTURES ${CUDA_ARCH_BIN}) # Generate PTX for last architecture list(GET CUDA_ARCH_BIN -1 ver) set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -gencode arch=compute_${ver},code=compute_${ver}") message(STATUS "CMAKE_CUDA_FLAGS: ${CMAKE_CUDA_FLAGS}") add_library(pcl_cuda INTERFACE) target_include_directories(pcl_cuda INTERFACE ${CUDA_TOOLKIT_INCLUDE}) endif () endif()
这段代码是CMake脚本,主要用于检测CUDA是否安装,并设置CUDA相关的编译器标志和选项。
首先,它检查CUDA是否被找到,如果有就输出CUDA Toolkit的版本号,并启用CUDA编程语言。然后,它设置了一个名为HAVE_CUDA的变量为TRUE,以表示CUDA已被找到。
接下来,它检查CUDA的编译器ID是否为"NVIDIA",如果是,就根据CUDA版本号设置__CUDA_ARCH_BIN变量,该变量包含了支持的GPU架构。如果CUDA版本号大于等于11.1,则通过执行nvcc命令获取支持的GPU架构列表,并将其存储在__CUDA_ARCH_BIN变量中。如果CUDA版本号在11.0到10.0之间,则设置__CUDA_ARCH_BIN变量为支持的GPU架构列表。如果CUDA版本号在9.1及以下,则设置__CUDA_ARCH_BIN变量为支持的GPU架构列表。
如果CUDA编译器ID不是"NVIDIA",则会输出一个错误信息,表示不支持该CUDA编译器。
最后,它设置了一个名为CUDA_ARCH_BIN的缓存变量,该变量包含了要为哪些GPU架构构建代码的选项。然后,它使用CMake策略CMP0104来设置CMAKE_CUDA_ARCHITECTURES变量,该变量指定要为哪些GPU架构生成代码。如果未设置CMP0104策略,则会设置CMAKE_CUDA_FLAGS变量来指定要为哪些GPU架构生成代码,并将CUDA_TOOLKIT_INCLUDE路径添加到pcl_cuda库的包含目录中。最后,它创建一个名为pcl_cuda的接口库,以便在其他目标中链接CUDA库。
阅读全文