1. ホーム
  2. cmake

[解決済み】CMake:スクリプト内のアクセス可能なすべての変数を出力する

2022-04-04 04:43:55

質問

CMakeでアクセス可能なすべての変数をプリントアウトする方法はないでしょうか。私はCMake変数に興味があるわけではありません - のように。 --help-variables オプションで指定します。私が定義した変数や、インクルードされたスクリプトによって定義された変数についてです。

現在インクルードしている

INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityCXX.cmake)

そして、すべてのファイルを調べて利用可能なものを読む代わりに、ここにあるすべての変数をプリントアウトできればと思いました - 私が知らなかった便利な変数が見つかるかもしれません。学習&発見を助けるために良いだろう。あくまでもデバッグ/開発用です。

の質問と似ていますね。 Luaの現在のスコープでアクセス可能なすべてのローカル変数を表示する が、CMakeのために!

誰かやったことある?

解決方法は?

を使用します。 get_cmake_property 関数を使用すると、次のループで定義されているすべての CMake 変数とその値が出力されます。

get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
foreach (_variableName ${_variableNames})
    message(STATUS "${_variableName}=${${_variableName}}")
endforeach()

これは、オプションで正規表現を使用して、一致する名前の変数のサブセットのみを表示することができる便利な関数に埋め込むこともできます。

function(dump_cmake_variables)
    get_cmake_property(_variableNames VARIABLES)
    list (SORT _variableNames)
    foreach (_variableName ${_variableNames})
        if (ARGV0)
            unset(MATCHED)
            string(REGEX MATCH ${ARGV0} MATCHED ${_variableName})
            if (NOT MATCHED)
                continue()
            endif()
        endif()
        message(STATUS "${_variableName}=${${_variableName}}")
    endforeach()
endfunction()

環境変数を表示するには、CMake の コマンドモード :

execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "environment")