user3237: I have following code:
MyApp.ino:
#include "DfRobotLcdShield.h"

void setup() {
}

void loop() {
}

DfRobotLcdShield.h:
#include <LiquidCrystal.h>

When I try to compile, I'm getting the error:
In file included from MyApp.ino:1:0:
c:\temp\build5856181074637812172.tmp\DfRobotLcdShield.h:4:27: fatal error: LiquidCrystal.h: No such file or directory
 #include <LiquidCrystal.h>
                           ^
compilation terminated.
Error compiling.

When I add
#include <LiquidCrystal.h>

directly to the .ino file, it works. I'm using the latest Arduino-IDE 1.6.3.

user1677: This seems to be a general problem of the Arduino IDE: It only recognizes libraries that are included in the (primary) .ino file.
If you look at the invocation of the compiler, the path to any given library is only added if this library's header file is included in the .ino file.
I tested this with the EEPROM library. If this library is included in the .ino file, the compiler is called with
avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I/usr/share/arduino/hardware/arduino/cores/arduino -I/usr/share/arduino/hardware/arduino/variants/eightanaloginputs -I/usr/share/arduino/libraries/EEPROM /tmp/build2678545434708654378.tmp/test.cpp -o/tmp/build2678545434708654378.tmp/test.cpp.o 

where the important part is the -I/usr/share/arduino/libraries/EEPROM.
If I now remove #include <EEPROM.h> (but still have it in another header file which in turn is included in the .ino as in your case), the compiler call changes to
avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I/usr/share/arduino/hardware/arduino/cores/arduino -I/usr/share/arduino/hardware/arduino/variants/eightanaloginputs /tmp/build2678545434708654378.tmp/test.cpp -o/tmp/build2678545434708654378.tmp/test.cpp.o

where now the include path to the library is missing.
TL;DR
If you need to use a library, just (also) add an include to the .ino file. It doesn't cost you anything and will solve your problem ;)

#include <file> vs. #include "file"
From the gcc documentation:

#include <file> is used for system header files. It searches for a file named file in a standard list of system directories. [...]
#include "file" is used for header files of your own program. It searches for a file named file first in the directory containing the current file, then in the quote directories and then the same directories used for <file>. [...]


3237: <p>I have following code:</p>

<p><strong>MyApp.ino</strong>:</p>

<pre><code>#include "DfRobotLcdShield.h"

void setup() {
}

void loop() {
}
</code></pre>

<p><strong>DfRobotLcdShield.h</strong>:</p>

<pre><code>#include &lt;LiquidCrystal.h&gt;
</code></pre>

<p>When I try to compile, I'm getting the error:</p>

<pre><code>In file included from MyApp.ino:1:0:
c:\temp\build5856181074637812172.tmp\DfRobotLcdShield.h:4:27: fatal error: LiquidCrystal.h: No such file or directory
 #include &lt;LiquidCrystal.h&gt;
                           ^
compilation terminated.
Error compiling.
</code></pre>

<p>When I add</p>

<pre><code>#include &lt;LiquidCrystal.h&gt;
</code></pre>

<p>directly to the .ino file, it works. I'm using the latest Arduino-IDE 1.6.3.</p>
 1677: <p>This seems to be a general problem of the Arduino IDE: It only recognizes libraries that are included in the (primary) <code>.ino</code> file.</p>
<p>If you look at the invocation of the compiler, the path to any given library is only added if this library's header file is included in the <code>.ino</code> file.</p>
<p>I tested this with the EEPROM library. If this library is included in the <code>.ino</code> file, the compiler is called with</p>
<pre><code>avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I/usr/share/arduino/hardware/arduino/cores/arduino -I/usr/share/arduino/hardware/arduino/variants/eightanaloginputs -I/usr/share/arduino/libraries/EEPROM /tmp/build2678545434708654378.tmp/test.cpp -o/tmp/build2678545434708654378.tmp/test.cpp.o 
</code></pre>
<p>where the important part is the <code>-I/usr/share/arduino/libraries/EEPROM</code>.</p>
<p>If I now remove <code>#include &lt;EEPROM.h&gt;</code> (but still have it in another header file which in turn is included in the <code>.ino</code> as in your case), the compiler call changes to</p>
<pre><code>avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=100 -I/usr/share/arduino/hardware/arduino/cores/arduino -I/usr/share/arduino/hardware/arduino/variants/eightanaloginputs /tmp/build2678545434708654378.tmp/test.cpp -o/tmp/build2678545434708654378.tmp/test.cpp.o
</code></pre>
<p>where now the include path to the library is missing.</p>
<h2>TL;DR</h2>
<p>If you need to use a library, just (also) add an include to the <code>.ino</code> file. It doesn't cost you anything and will solve your problem ;)</p>
<hr />
<h3><code>#include &lt;file&gt;</code> vs. <code>#include &quot;file&quot;</code></h3>
<p>From the <a href="https://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html" rel="nofollow noreferrer">gcc documentation</a>:</p>
<ul>
<li><em>#include &lt;file&gt;</em> is used for system header files. It searches for a file named file in a standard list of system directories. [...]</li>
<li><em>#include &quot;file&quot;</em> is used for header files of your own program. It searches for a file named file first in the directory containing the current file, then in the quote directories and then the same directories used for &lt;file&gt;. [...]</li>
</ul>
