if (TARGET LibUV::uv OR TARGET uv)
    #do nothing, it is already exists, ussually it is subdirrectory included
    message(STATUS "found libuv with defined target LibUV::uv")
else()
    #try config mode
    find_package(libuv QUIET CONFIG)
    if (libuv_FOUND)
        #do nothing, find_package makes all job
        message(STATUS "found libuv with CONFIG mode")
    else()
        #try pkg-config
        find_package(PkgConfig)
        set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH TRUE)
        pkg_check_modules(libuv QUIET IMPORTED_TARGET GLOBAL libuv)

        if (TARGET PkgConfig::libuv)
            message(STATUS "found libuv with pkg-conf")
            add_library(LibUV::uv ALIAS PkgConfig::libuv)
        else()
            message(ERROR "Cannot find libuv")
        endif()
    endif()
endif()