CMake: スクリプト内のアクセス可能なすべての変数を出力する 質問する

CMake: スクリプト内のアクセス可能なすべての変数を出力する 質問する

CMake でアクセス可能なすべての変数を出力する方法があるかどうか知りたいです。--help-variablesオプションにある CMake 変数には興味がありません。私が定義した変数、または組み込まれたスクリプトによって定義された変数について話しているのです。

現在、以下を含めています:

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

そして、すべてのファイルを調べて利用可能なものを読むのではなく、ここにあるすべての変数を印刷できればいいなと思っていました。知らなかった、役に立つかもしれない変数が見つかるかもしれません。学習と発見に役立つと良いでしょう。これはデバッグ/開発専用です。

これは、Lua の現在のスコープにアクセス可能なすべてのローカル変数を印刷します。、ただし CMake 用です!

誰かこれをやったことある?

ベストアンサー1

使用方法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()

あるいは、より簡潔な形では、次のようになります。

function(dump_cmake_variables)
    get_cmake_property(_variableNames VARIABLES)
    list (SORT _variableNames)
    foreach (_variableName ${_variableNames})
        if ((NOT DEFINED ARGV0) OR _variableName MATCHES ${ARGV0})
            message(STATUS "${_variableName}=${${_variableName}}")
        endif()
    endforeach()
endfunction()

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

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

おすすめ記事