CMake函数将ARGV传递给内部调用的函数

时间:2019-04-15 18:43:54

标签: build cmake cmake-modules cmake-language

我正在尝试为某些CMake函数编写包装函数。但是面对一个问题,当涉及到将参数作为一个可选参数时。

function(test_function1 TARGET MOD_NAME)
    if (ARGV2)
        message("---->")
        message(${ARGV2})
    else()
        message("-1---> Not Found1")
    endif()
endfunction()


function(test_function2 TARGET MOD_NAME FLEX_NAME)
    if (ARGV3)
        message("---->")
        message(ARGV3)
        test_function1(${TARGET} ${MOD_NAME} ${ARV3})
    else()
        message("-2---> Not Found1")
        test_function1(${TARGET} ${MOD_NAME})
    endif()
endfunction()

在此,函数“ test_function2”应具有第4个自变量(ARGV3)作为可选参数。该函数应该调用“ test_function1”函数。如果将ARVG3提供给第一个“ test_function2”,则应将其传递给“ test_function1”。但是,当不包含第4个参数时,“ test_function1”似乎仍然检测到第3个参数,实际上是第3个传递给test_function2的参数。因此,似乎CMake也在将参数列表传递给子函数调用。

所以,问题是如何避免使用该参数或其他任何合适的替代方法使参数成为可选参数?

谢谢!

0 个答案:

没有答案