From the docs of get_filename_component (highlighting be me)
:
get_filename_component(<VAR> <FileName> <COMP> [BASE_DIR <BASE_DIR>] [CACHE])Set
<VAR>to the absolute path of<FileName>, where<COMP>is one of:
ABSOLUTE= Full path to file
REALPATH= Full path to existing file with symlinks resolvedIf the provided
<FileName>is a relative path, it is evaluated relative to the given base directory<BASE_DIR>. If no base directory is provided, the default base directory will beCMAKE_CURRENT_SOURCE_DIR.Paths are returned with forward slashes and have no trailing slashes. If the optional
CACHEargument is specified, the result variable is added to the cache.
Thus, you use:
get_filename_component(buildDirRelFilePath "${myFile}"
REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
To convert an absolute path to a file into a relative paths, you might use the file command:
file(RELATIVE_PATH <variable> <directory> <file>)Compute the relative path from a
<directory>to a<file>and store it in the<variable>.
file(RELATIVE_PATH buildDirRelFilePath "${CMAKE_BINARY_DIR}" "${myFile}")