** (UN)FREQUENTLY ASKED QUESTIONS **

1. Why do you have to specify PREFIX= even when building
when overriding the default ?

2. Why is it angelscript_s and not just angelscript (as some
might expect) ?

3. When overriding the default prefix, how do you compile
and link my program ?

--
1. Why do you have to specify PREFIX= even when building,
  when overriding the default ?

Because it allows easier linking. The way the Linux
link loader works, if the library name has a slash in it,
then it resolves it that way. If it doesn't it goes through
a series of steps which tries to find it. However, without
updating a certain file it won't find it under '/usr/local'
(and similar with '/tmp'). Therefore, as long as you have
the same PREFIX= (or don't specify it at all), all you need
to do to link to the shared version is link to it (and any
other dependencies; -lpthread comes to mind here). For
example the link options might be :
-langelscript_s -lpthread

--
2. Why is it angelscript_s and not just angelscript
(like one might expect) ?

In the case you want to statically link (generally in
Linux it is preferred to use shared linking but there is
always an exception) you would have a problem with the
same name and path (name of library, two different
types: archive and shared object). Since some might
want to link statically and since Andreas told me that
is the recommended way, I opted for angelscript_s for
the shared object name.

--
3. When overriding the default prefix, how do you compile
and link my program ?

An example scenario is the following :
You installed into /opt which means the following
files should exist :

/opt/include/angelscript.h
/opt/lib/libangelscript_s.so (which is a symbolic link
to the current version installed)
/opt/lib/libangelscript.a (the static library).

If you #include angelscript.h you might normally
have :

#include <angelscript.h>

However, when that file is not in the standard directories
the compiler searches, you have to either use :

#include "/opt/include/angelscript.h"
(method one)
or alternatively keep the include (using the angel brackets)
but pass the include path (or paths actually but in this case
path) to the compiler so it knows to search an additional
location. If you're using g++ then the following option
will work (it also works for gcc but I am assuming you
are using C++) :

-I/opt/include

You must however still link. You therefore must pass another
option to the compiler (which will pass it to the linker)
and the option os -L which is used like so (to follow the
scenario) :

-L/opt/lib

The rest is the same.

CONTACT INFO:
If you have any questions or concerns, by all
means have Andreas contact me (at this time I
don't have an email I feel okay sharing - if it
seems this is of use to others I will likely
create an email on my server for this very
purpose). For now Andreas can forward the
message to me.
