[cmake] CMake : 스크립트에서 접근 가능한 모든 변수를 인쇄

CMake에서 모든 액세스 가능한 변수를 인쇄하는 방법이 있는지 궁금합니다. --help-variables옵션 에서와 같이 CMake 변수에 관심이 없습니다 . 정의한 변수 또는 포함 된 스크립트로 정의 된 변수에 대해 이야기하고 있습니다.

나는 현재 다음을 포함하고 있습니다 :

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")


답변

다른 방법은 간단히 사용하는 것입니다.

cmake -LAH

로부터 :

-L[A][H]

고급 캐시되지 않은 변수를 나열합니다.

캐시 변수 나열은 CMake를 실행하고 CMake 캐시에서 INTERNAL또는 로 표시되지 않은 모든 변수를 나열합니다 ADVANCED. 현재 CMake 설정을 효과적으로 표시합니다 …].

A지정 하면 고급 변수도 표시됩니다.

H지정 하면 각 변수에 대한 도움말도 표시됩니다.


답변

ccmake캐시 된 변수를 대화식으로 검사하는 좋은 대화식 옵션입니다 ( option(또는 set( CACHE:

sudo apt-get install cmake-curses-gui
mkdir build
cd build
cmake ..
ccmake ..


답변