R2014b onwards the compiler no longer translates your MATLAB code to C code which then is compiled;
With the new compiler at runtime you basically still have interpreted MATLAB code. This also introduced a completely different dependency analysis. During compile time it try to determine which dependencies are needed and we will include those into the application.
On a really high level this works something like the following. If It encounter a line like: a = foo(1,2,3) We look for functions named "foo" on your MATLABPATH, if there are any we include those with the application, if there are none it assume that "foo(1,2,3)" was not actually an attempt to call function foo with inputs 1, 2 and 3 but you were actually indexing into a variable foo with index 1, 2 and 3 instead. No error will be thrown that "foo" cannot be found.
Note: the -a option for "mcc" can also be used to include whole directories. So On the other computer,the complete packages which need to be compiled into a MATLAB Compiler component you could consider simply adding everything you sent. The risk here of course is that you may be adding way too much and creating larger than necessary packages, also this still would not guarantee that the code can actually run successfully; again It would be recommend running actual (unit) tests on the code which you want to compile right before you compile it.