CMakeで現状のインクルードパスを文字列として得るには

インクルードパスをCMakeで指定するにはinclude_directoriesを利用するが, 逆に今その関数によってどこが追加されているかを文字列として取得したい.

まず, その情報自体はINCLUDE_DIRECTORIESにあるが, これはプロパティであって(環境)変数ではない. そこで一旦これをとってくる.

https://cmake.org/cmake/help/v3.0/command/include_directories.html#command:include_directories

get_directory_property(INCLUDE_PATH INCLUDE_DIRECTORIES)

http://stackoverflow.com/questions/6902149/listing-include-directories-in-cmake

ただし, ここで得たINCLUDE_PATHはリストなので, "/path/to/A:/path/to/B"のような形にするにはリストを連結しなければならない.

set(_TMP_RESULT "")
set(_GLUE "") # effective glue is empty at the beginning
foreach(SINGLE_PATH ${INCLUDE_PATH})
  set(_TMP_RESULT "${_TMP_RESULT}${_GLUE}${SINGLE_PATH}")
  set(_GLUE ":") # delimiter
endforeach()
set(INCLUDE_PATH ${_TMP_RESULT})
# message("${INCLUDE_PATH}")

http://stackoverflow.com/questions/7172670/best-shortest-way-to-join-a-list-in-cmake

これでインクルードパスを":"で連結した文字列として得られた.