Question on path statement with subdirectory specified

I'm trying to understand Arduino's file search path. I am using V1.8.9 on Win10/64

By some trial and error I was under the impression that an include statement like:
#include <bme680/bme680.h>

would (only?) look in the folder bme680 under the file where it was called.
However this does not seem to work in the below case.

Is there a reference I can use to understand the search paths the IDE uses?

In file included from C:\Users\john\Documents\Arduino\BME680_Series\bsec_iot_example\bsec_iot_example.ino:27:
bsec_integration.h:86:10: error: bme680/bme680.h: No such file or directory
#include <bme680/bme680.h> // was#include "bme680.h"

  • ^~~~~~~~~~~~~~~~~*
    compilation terminated.
    exit status 1
    bme680/bme680.h: No such file or directory

My folder structure is:


and my calling code from BSEC_integration.h is:

header files /

/* Use the following bme680 driver: Release BME680 API v3.5.1 · BoschSensortec/BME680_driver · GitHub /
#include "bme680/bme680.h" // was quotes
BSEC header files are available in the inc/ folder of the release package */
#include <inc/bsec_interface.h> // mod, added inc slash changed from quotes
#include <inc/bsec_datatypes.h> // mod, added inc


I believe this thread can answer your question.

Essentially, the use of quotation marks (""), not angle brackets (<>) after #include tells the compiler to look for the file locally.

Thanks, but my problem was with the /folder1/Req'd file

As it turns out the calling file was duplicated in two places in the search path so the relative folder statement was looking in the wrong place.


I’ve found the most convenient, and reliable, way of adding “libraries” under a sketch to be to put them in a “src” subdirectory. For example, if you have library xyzzy, containing xyzzy.h and xyzzy.cpp, and you want to include them in sketch “plugh.ino”, create the following file structure:

sketch directory: “plugh”, contains “plugh.ino”, and subdirectory “src”
subdirectory “src” contains subdirectory “zyzzy”
subdirectory “xyzzy” contains xyzzy.h and xyzzy.cpp

You can put as many libraries into “src” as you like, using the same structure as shown for xyzzy.

The sketch, in this example plugh.ino, will #include “src/xyzzy/xyzzy.h” <== Note QUOTES, NOT BRACKETS
src/xyzzy.cpp will #include “xyzzy.h” <== Note QUOTES, NOT BRACKETS

Ray L.