座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

CMakeで設定されているすべての変数を出力する

CMakeのなかで使われている変数はたくさんあって (よく使うのは CMAKE_CXX_FLAGS とかですかね)、 それらをすべて出力する方法はないかと思って調べてみたら、stackoverflowにあった。

CMAKE: Print out all accessible variables in a script - Stack Overflow

CMakeLists.txt に次のコードを書いて実行すると、 -- *** dump start cmake variables ***-- *** dump end *** の間にすべての変数が出力される。

message(STATUS "*** dump start cmake variables ***")
get_cmake_property(_variableNames VARIABLES)
foreach(_variableName ${_variableNames})
        message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
message(STATUS "*** dump end ***")

実行結果の例。

-- *** dump start cmake variables ***
-- CMAKE_AR=/usr/bin/ar.exe
-- CMAKE_BACKWARDS_COMPATIBILITY=2.4
-- CMAKE_BASE_NAME=g++
(省略)
-- f=
-- type=
-- val=0
-- *** dump end ***

VARIABLES は変数ではなく、CMakeのプロパティらしい。それを get_cmake_property で得て、すべての変数名とその値を foreach コマンドで出力している。

get_cmake_property で取得可能なプロパティは、VARIABLES の他にこれだけある。

  • CACHE_VARIABLES
  • COMMANDS
  • MACROS
  • COMPONENTS

CMakeで使用可能なコマンド、変数についての詳細。

CMake - Cross Platform Make

CMakeが思ったように動かないときに、デフォルト・既存の変数の中身を確認したくなる ときに役立つかも。