Paths to system header files


Perhaps this question has been asked before, but I couldn’t find a proper solution for this issue. When I produce an executable and use it in another machine, sometimes Clang is not able to find system header files (for instance “limits.h”) because the paths to find these headers are relative to the location of the Clang libraries.

All the same, when I’m using FIXED COMPILATION, I’m able to automatically retrieve the paths to system headers of the machine where the executable is being run. I mean, I retrieve the paths and add them after “–” to the command through the option -isystem. However, when I’m using JSON COMPILATION DATABASE, I can’t do that, so in this case I don’t know how to solve this issue.

What is the appropriate manner to handle this matter of the paths to system header files?


Not sure if ti's the most appropriate way of doing it but I'm embedding the internal Clang headers in my executable. This post [1] [2].



There are some environment variables you can use, e.g, CPATH, etc. Please take a look at the Environment section of this page for details, or look at the:

(sorry, left this out of last message)
or look at the code in lib/Driver/Tools.cpp where these variables are processed.