if("${FOO}" STREQUAL "BAR") # ...
if("${BAZ}" EQUAL "0") # ...
if("FOO" IN_LIST list_variable) # ...
if("${bar}" MATCHES [[a[bcd]+\.[bcd]+]]) # ...
对于单个表达式和不采用 <variable|string>
的其他类型的谓词,请使用普通规则。
如果变量打算在本地使用,则必须将其显式初始化为空 set(foo "")
(如果它是字符串变量,如果是 vcpkg_list(SET foo)
列表变量)。
set(var)
不应使用 。 使用 unset(var)
取消设置变量, set(var "")
将其设置为空字符串,并将其 vcpkg_list(SET var)
设置为空列表。
注意:空字符串和空列表是相同的值;这是一个表示法差异,而不是结果的差异
应记录跨 API 边界从父范围继承的所有变量, (即,不应记录文件本地函数) 。
三重文件中提到的所有变量都被视为文档化。
Out 参数仅在 中 PARENT_SCOPE
设置,永远不会读取。
另请参阅通过函数范围转发参数的帮助程序 z_vcpkg_forward_output_variable()
。
CACHE
变量仅用于在强耦合函数内部共享的全局变量,以及单个函数的内部状态,以避免重复工作。
应非常谨慎地使用这些变量,并应使用 Z_VCPKG_
前缀,以避免与将由任何其他代码定义的任何本地变量发生冲突。
vcpkg_cmake_configure
的 Z_VCPKG_CMAKE_GENERATOR
z_vcpkg_get_cmake_vars
的 Z_VCPKG_GET_CMAKE_VARS_FILE
include()
仅在 或 vcpkg-port-config.cmake
中ports.cmake
允许使用 s。
foreach(RANGE)
的参数 必须始终是 自然数,并且 <start>
必须始终 小于或等于 <stop>
。
必须通过如下所示的内容进行检查:
if("${start}" LESS_EQUAL "${end}")
foreach(RANGE "${start}" "${end}")
endforeach()
endif()
需要 CMake 版本
除 之外vcpkg.cmake
的所有 CMake 脚本都可能假定 中cmake_minimum_required
ports.cmake
存在的 CMake 版本。
每次将新版本的 CMake 添加到 vcpkgTools.xml
时,都会cmake_minimum_required
发生此问题,就像所有帮助程序CMakeLists.txt
文件中的 一样cmake_minimum_required
。
vcpkg.cmake
一般情况下,必须假定 CMake 版本回到 3.7.2