The list of include directories is empty by default.

I have a file with 2 target_include_directories() commands, but outside of the directories specified in them, nothing else gets searched for headers, including system directories, and printing the INCLUDE_DIRECTORIES directory property gives a blank line.
The two calls are as follows:

target_include_directories(fake-jni PUBLIC include)
if(LOCAL_INSTALL)
	target_include_directories(fake-jni PUBLIC ${CMAKE_INSTALL_PREFIX}/dep_headers ${CMAKE_INSTALL_PREFIX}/dep_headers/cx)
endif()

Nothing else in the CMakeLists.txt touches includes at all. I would appreciate any help in figuring out what’s going on.

You would need to show the contents of your toolchain file (if you’re using one) and how you’re invoking CMake. It may also be useful to state what CMake version you’re using. Ideally, if you can reduce your project down to a complete, minimal one that can demonstrate the problem, that may also help others spot where things are going awry for you.

Keep in mind that you don’t normally see the default toolchain header search paths on the compiler command line or in any directory or target properties within CMake. The compiler adds those search paths internally. You’ve claimed that the system directories don’t get searched. Can you explain how you verified that?