Jake Gage writes:
 > Hey there,
 > 
 >   I've been using emacs for quite a few years, but never byte compiled
 > anything until I started using the JDE... so bear with me.  I've
 > checked all the documentation and FAQs I could find, but I'm still a
 > bit confused.  I've byte compiled all the JDEE packages a number of
 > times, but gotten errors every time: this time I've got a shiny new
 > machine and I'd like to actually see if I'm compiling everything
 > correctly.
 > 

You can generally ignore byte compile error messages that refer to
missing functions and variables. Generally these arise because a
package is written to work on many different versions of Emacs, some
of which may not define a particular function. In such cases, the
package tests for the presence of the function or variable or the
version of Emacs and works around the missing function or
variable. The compiler, however, cannot know this and so simply
assumes that any reference to a function or variable that is missing
on the version of Emacs doing the compiling is valid and
that the missing function or variable is defined
by a package that will be loaded at runtime. The compiler nevertheless
displays an error message for each reference to a missing
function or variable as a warning to the developer. In general,
you can assume that the developer has compiled the package and
checked to ensure that his code works around each missing 
function or variable.

The most common mistake made by JDEE users in compiling JDEE Lisp
files is to compile them individually without first ensuring that
codependent Lisp files are loaded in memory. This causes the compiler
to compile references to macros defined in another file as references
to nonexistent functions which then leads to missing function errors
at compile time and runtime. The easiest way to avoid this problem is
to use the makefiles that come with the JDEE packages or better to use
jde-compile-jde command to compile them. The makefiles and
jde-compile-jde command ensure that all codependent packages are
loaded in memory--and hence all macros defined--before compiling
any of them.

- Paul

Reply via email to