addpath and cd can be seen as requests to change which functions are executed at runtime -- for example cd'ing into a directory that has its own sqrt.m there and expecting that at run-time it would pick up that sqrt() for as long as it is executing in that directory.
But compiled executables need to be built with static paths for .m and related executable objects. If you need to add directories to the path at the beginning of execution just to bring in the hierarchy, then the app building GUI has a place to specify directories to add to the path, or if you are using the command line, you can use mcc -a
So, at execution time, the only thing that is left for cd or addpath to do, is to change the path to find data files. But you should not do that: you should use fully-qualified file names instead.
In short: Don't change the working directory. Build all necessary paths into the executable, and use fully-qualified files instead of relative files.