In this case, it seems that the author(s) put the implementation in .hpp files (which include the corresponding .h files), which are not compiled when not included. Hence the "undefined reference" linker errors when the .h file is included only.
When the .hpp files are renamed to .cpp files and the appropriate include (Arduino.h) is added, the example compiles when the .h file is used.
See the diff for details.
diff --git a/src/LightweightServo.hpp b/src/LightweightServo.cpp
similarity index 100%
rename from src/LightweightServo.hpp
rename to src/LightweightServo.cpp
diff --git a/src/LightweightServo.h b/src/LightweightServo.h
index 34dbe6c..4eaf3cd 100644
--- a/src/LightweightServo.h
+++ b/src/LightweightServo.h
@@ -1,3 +1,4 @@
+#include <Arduino.h>
/*
* LightweightServo.h
*
diff --git a/src/ServoEasing.hpp b/src/ServoEasing.cpp
similarity index 100%
rename from src/ServoEasing.hpp
rename to src/ServoEasing.cpp
diff --git a/src/ServoEasing.h b/src/ServoEasing.h
index 0085a65..92c7f2c 100644
--- a/src/ServoEasing.h
+++ b/src/ServoEasing.h
@@ -882,8 +882,4 @@ bool checkI2CConnection(uint8_t aI2CAddress, Stream *aSerial); // Print class ha
* - added convenience function clipDegreeSpecial().
*/
-#if !defined(_SERVO_EASING_HPP) && !defined(SUPPRESS_HPP_WARNING)
-#warning You probably must change the line #include "ServoEasing.h" to #include "ServoEasing.hpp" in your ino file or define SUPPRESS_HPP_WARNING before the include to suppress this warning.
-#endif
-
#endif // _SERVO_EASING_H