2.1 必需参数与可选参数 (Required vs. Optional Arguments) 在函数和宏的设计中,明确参数的必需性和可选性是非常重要的。CMake本身并不直接支持标记参数为必需或可选,但通过合理利用cmake_parse_arguments,我们可以灵活地实现这一功能。 2.1.1 实现必需参数 (Implementing Required
function(setup_compiler_options target_name)set(options DEBUG_MODE)set(oneValueArgs COMPILER)set(multiValueArgs OPTIONS)cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})if(ARG_DEBUG_MODE)target_compile_definitions(${target_name} PRIVATE DEBUG=1)endif()ta...
最后更新: 2019-06-08 一、指令介绍 cmake_parse_arguments为解析函数(function)或宏(macros) 参数的命令; cmake_parse_arguments(<prefix><options><one_value_keywords><multi_value_keywords><args>...) cmake_parse_arguments(PARSE_ARGV<N><prefix><options><one_value_keywords><multi_value_keywords>) ...
include(CMakeParseArguments) 是为了使用 cmake_parse_arguments(),看样子是用来解析输入参数的。 给出参考: https://cmake.org/pipermail/cmake/2012-October/052443.html https://cmake.org/cmake/help/v3.0/module/CMakeParseArguments.html
G:\work\cfd\cmake\cmake-3.21.0\Source\cmParseArgumentsCommand.cxx(115):// cmake_parse_arguments(PARSE_ARGV N prefix options single multi) 有: 说明是按照字符串读入的,取什么名字无所谓。 继续重构: 运行,有: 说明只定义prefix开头的变量,比如,如果调用cmake_parse_arguments( MY_INSTALL ...
该函数有一个单值关键字参数,我们将使用cmake_parse_arguments命令对其进行解析: 代码语言:javascript 代码运行次数:0 运行 复制 function(add_breathe_doc) set(options) set(oneValueArgs SOURCE_DIR BUILD_DIR CACHE_DIR HTML_DIR DOXY_FILE CONF_FILE TARGET_NAME COMMENT ) set(multiValueArgs) cmake_parse_...
function(format out_var)cmake_parse_arguments(PARSE_ARGV1"arg"...)# ... set(buffer "output")set("${out_var}""${buffer}"PARENT_SCOPE)endfunction() 没有未解析或未使用的参数。 始终检查ARGN或arg_UNPARSED_ARGUMENTS。 如果可能则为FATAL_ERROR;如果需要后向兼容性则为WARNING。
如果函数/宏调用时传入了 cmake_parse_arguments() 未指定的其他参数,则其内容均保存在 COMPLEX_PREFIX_UNPARSED_ARGUMENTS 变量中。 4. CMakeCache.txt 编写 CMakeCache.txt 文件本是由 cmake 命令默认生成的,但其内容是可以修改的。CMakeCache.txt 文件主要保存的是 cmake 过程中需要使用的环境变量,当 cmake...
文件已经包含了该文件。由于Find* 文件的结果被缓存,不再重新运行,它们不再包含CMakeParseArguments。
include(CMakeParseArguments) cmake_minimum_required(VERSION 3.1.3) # --- Public Functions. # These are all documented in README_cmake.md. # # Note that certain CMake variables may need to be set correctly to use these rules: # # - If you are using a Halide distribution, simply set...