The target_include_directories command documents that the specified paths must be either absolute or relative paths. If given a relative path, target_include_directories interprets it with respect to the current source directory. The code here determines that an empty string is not an absolute path, and so converts it to an absolute path by prefixing it with the current source directory.
In your use case, the variable reference should not be quoted. CMake’s language does not require quoting variable references to handle spaces in the path. An unquoted variable reference will expand to zero or more non-empty arguments by splitting on ;. See documentation on lists.
The code here determines that an empty string is not an absolute path, and so converts it to an absolute path by prefixing it with the current source directory.
Then why doesn’t it trigger an error like when you add e.g. ‘.’ as relative path?
target_include_directories(Tutorial PUBLIC ".")
CMake Error in CMakeLists.txt:
Target "Tutorial" INTERFACE_INCLUDE_DIRECTORIES property contains path:
"/OE/projects/cmake/Help/guide/tutorial/Step2/."
which is prefixed in the source directory.
similarly
target_include_directories(Tutorial PUBLIC "..")
triggers the same error (except the shown path), but
target_include_directories(Tutorial PUBLIC "")
doesn’t trigger any error nor any warning about unnecessary quotes.