Q:

Making functions from an emacs mode available outside the mode's file

I've written an emacs minor mode that should make some functions available for explicit invocation in addition to the minor mode. In the mode's file, after defining the modes and the function, I've provided the mode:
(provide 'xcode-dired-mode)

which, in my .emacs I require:
(setq load-path (cons "~/Documents/Local Projects/xcode-emacs" load-path))
(require 'xcode-dired-mode "xcode-dired")

Now when a buffer is in this mode, I want to have a few extra functions available. If I defun a function in the lisp file for the minor mode, like:
(defun xcode-build()
  "Build the default target in the Xcode project."
  ;; ...
  )

the functions are not available outside the file, e.g. M-x xcode-build will not work. I don't think provideing the files is the appropriate thing to do, as I don't want to have to require all of them in .emacs. I've seen the magic comment ;;; ###autoload but as far as I can tell that's only used when compiling emacs itself.
How do I arrange that when my minor mode is applied to a buffer, the functions defined in the mode's lisp file can be used?

A:

In order to call xcode-build via M-x, you'll need to make sure the function implementation calls the interactive special-form to declare the function as interactively callable.
I believe this is the relevant emacs documentation:
http://www.gnu.org/software/emacs/manual/html_node/elisp/Using-Interactive.html
http://www.gnu.org/software/emacs/manual/html_node/elisp/Interactive-Call.html

