如何将空元素添加到CMake列表?

时间:2019-02-07 08:32:29

标签: cmake

有CMake脚本:

unset(FOO)
list(APPEND FOO "")
list(APPEND FOO "")
list(APPEND FOO "")
list(APPEND FOO "")
list(LENGTH FOO SIZE)
message(FATAL_ERROR ${SIZE})

期望-4.现实-0

我找到了一种解决方法,但看起来像个麻烦事:

set(FOO "dummy")
set(FOO "${FOO};")
set(FOO "${FOO};")
set(FOO "${FOO};")
set(FOO "${FOO};")
list(REMOVE_AT FOO 0)
message(FATAL_ERROR ${SIZE})

该示例比我的任务简单一些,因此,请不要建议编写set(FOO ";;;") :)我从外部获取元素,其中某些元素可能为空。像这样:

function(do_smth LIST_WITH_EMPTY_ITEMS)
    unset(RESULT)
    foreach(X IN LISTS LIST_WITH_EMPTY_ITEMS)
        if(${CONDITION})
            list(APPEND RESULT "${X}")
        endif()
    endforeach()
endfunction()

1 个答案:

答案 0 :(得分:1)

它似乎不适用于空列表,但是如果您使用一些虚拟值初始化列表,就像在第二个示例 package Controller; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "CartController", urlPatterns = {"/cart"}) public class CartController extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dis=request.getRequestDispatcher("cart.jsp"); dis.forward(request, response); } } 中所做的那样,则可以继续使用set(FOO "dummy")作为列出并向其附加空元素。基本上,这是您所需的方法和变通方法的组合:

FOO

此输出为:

set(FOO "dummy")
list(APPEND FOO "")
list(APPEND FOO "")
list(APPEND FOO "")
list(APPEND FOO "")
list(POP_FRONT FOO)

list(LENGTH FOO SIZE)
message("content: (${FOO})")
message("sizt: ${SIZE}")