function(merge_parser CL_SRC_DIR OUT_FILE_NAME)
    message(STATUS "Merge parser from ${CL_SRC_DIR} to ${OUT_FILE_NAME}")
    if(NOT EXISTS ${CL_SRC_DIR})
        return()
    endif()
    if(DEFINED MSLITE_COMPILE_TWICE AND NOT MSLITE_COMPILE_TWICE)
        return()
    endif()
    file(GLOB_RECURSE CL_LIST ${CL_SRC_DIR}/*.cc)
    list(SORT CL_LIST)
    set(out_file ${OUT_FILE_NAME})
    file(REMOVE ${out_file})
    file(WRITE ${out_file} "")
    foreach(file_path ${CL_LIST})
        file(STRINGS ${file_path} READ_CC_CONTEXT NEWLINE_CONSUME NO_HEX_CONVERSION)
        file(APPEND ${out_file} ${READ_CC_CONTEXT})
    endforeach()
endfunction()
