Vendoring is the act of making your own copy of the 3rd party packages your project is using. It is often used in the go language community.

cpp_vendor(path = ".")



The path to the package root directory


The file path to the vendored code (invisibly).


This function vendors cpp11 into your package by copying the cpp11 headers into the inst/include folder of your package and adding 'cpp11 version: XYZ' to the top of the files, where XYZ is the version of cpp11 currently installed on your machine.

If you choose to vendor the headers you should remove LinkingTo: cpp11 from your DESCRIPTION.

Note: vendoring places the responsibility of updating the code on you. Bugfixes and new features in cpp11 will not be available for your code until you run vector_cpp11() again.


# create a new directory dir <- tempfile() dir.create(dir) # vendor the cpp11 headers into the directory cpp_vendor(dir) list.files(file.path(dir, "inst", "include", "cpp11"))
#> [1] "altrep.hpp" "as.hpp" "attribute_proxy.hpp" #> [4] "data_frame.hpp" "declarations.hpp" "doubles.hpp" #> [7] "environment.hpp" "external_pointer.hpp" "function.hpp" #> [10] "integers.hpp" "list_of.hpp" "list.hpp" #> [13] "logicals.hpp" "matrix.hpp" "named_arg.hpp" #> [16] "protect.hpp" "r_bool.hpp" "r_string.hpp" #> [19] "r_vector.hpp" "R.hpp" "raws.hpp" #> [22] "sexp.hpp" "strings.hpp"
# cleanup unlink(dir, recursive = TRUE)