developing arduino libraries

If A developer is developing a library, is the library recompiled at each project recompilation? or d
an. object file just get compiled at the first time library is added?

When you verify or upload, at that point, it compiles things (and not before). It will reuse object files (I think that's what it reuses), but only if neither the build options nor the file it's compiling have changed.

I'm not sure the exact algorithm it uses to decide when to rebuild, but I've never had problems with changes I make to a library I'm working on not being picked up the next time I hit compile (unless I forgot to save the library, ofc).

You can sanity check (to make sure changes are being picked up) by putting in a #error, which will stop compilation with whatever message you put after it.

See user-created libraries go in a subdirectory of your default sketch directory.
On Windows, it would be My Documents\Arduino\libraries. To add your own library, create a new directory in the libraries directory with the name of your library. The folder should contain a C or C++ file with your code and a header file with your function and variable declarations. It will then appear in the Sketch | Import Library menu in the Arduino IDE.
After you've made changes to your library, in order to get it to recompile, you will have to delete the .o file generated in the library's directory.
Otherwise it won't recompile.

But the above is only true for developing libraries. The include path for the build process of Arduino includes the sketch's directory, the target directory and the avr include directory, as well as any library directories which contain a header file which is included by the main sketch file.

When you verify a sketch, it is built in a temporary directory in the system temp directory. The .c and .cpp files of the target are compiled and output with .o extensions to this directory, as is the main sketch file and any other .c or .cpp files in the sketch and any .c or .cpp files in any libraries which are #included in the sketch.

These .o files are then linked together into a static library and the main sketch file is linked against this library. Only the parts of the library needed for your sketch are included in the final .hex file, reducing the size of most sketches.
So, all libraries including the core libraries are compiled every time but still the user created libraries(separately) must be compiled once again for changes to take place.
This happens as Arduino is source distribution rather than binary.
P.S. since IDE1.6.1 Arduino uses some of the precompiled libraries if u recompile repeatedly while debugging after very short interval...

Chaitanya1:
After you've made changes to your library, in order to get it to recompile, you will have to delete the .o file generated in the library's directory.
Otherwise it won't recompile.

What "*.o" file in the library directory? After creating a library, there is no object file in it's directory.
After making changes to a library, it compiles fine without any extra steps like deleting an object file.
I use my own libraries all the time, and an object file is never created in the library's directory. Neither is it for other libraries.

Chaitanya1:
See user-created libraries go in a subdirectory of your default sketch directory.
On Windows, it would be My Documents\Arduino\libraries. To add your own library, create a new directory in the libraries directory with the name of your library. The folder should contain a C or C++ file with your code and a header file with your function and variable declarations. It will then appear in the Sketch | Import Library menu in the Arduino IDE.
After you've made changes to your library, in order to get it to recompile, you will have to delete the .o file generated in the library's directory.
Otherwise it won't recompile.

I have never had to delete a .o file, even when I was iterating very quickly during work on tiniergps and neopixel_static.

Chaitanya1:
See user-created libraries go in a subdirectory of your default sketch directory.
On Windows, it would be My Documents\Arduino\libraries. To add your own library, create a new directory in the libraries directory with the name of your library. The folder should contain a C or C++ file with your code and a header file with your function and variable declarations. It will then appear in the Sketch | Import Library menu in the Arduino IDE.
After you've made changes to your library, in order to get it to recompile, you will have to delete the .o file generated in the library's directory.
Otherwise it won't recompile.

If you develop your library files right in the sketch folder with the *.ino file, changes to them will not affect any other sketch. That is the default folder when you simply make tabs in the IDE for the *.h and *.cpp files, in with the sketch.

I changed from 1.6.1 to 1.6.8 and it takes way longer to compile. What the....?