Если у вас есть существующий файл кеша, вы можете сделать:
grep MY_CMAKE_VARIABLE CMakeCache.txt
Если у вас еще нет файла кеша и вы хотите увидеть, какие параметры есть в файле CMakeLists.txt, выможет сделать (в другом каталоге, так как это запишет файл кэша):
cmake -L /path/to/CMakeLists.txt | grep MY_CMAKE_VARIABLE
, который вернет вам что-то вроде
<VARIABLE>:<TYPE>=<VALUE>
Если это расширенная переменная, добавьте- Флаг той же команды, и он будет содержать дополнительные переменные.Конечно, если вам нужно только это значение, вы можете сделать:
cmake -L /path/to/CMakeLists.txt | grep MY_CMAKE_VARIABLE | cut -d "=" -f2
РЕДАКТИРОВАТЬ
Например, с CMakeLists.txt, который:
cmake_minimum_required(VERSION 2.8)
project(test)
include(otherFile.txt)
set(MY_VAR "Testing" CACHE STRING "")
И где otherFile.txt:
set(MY_OTHER_VAR "Hi" CACHE STRING "")
Команда (запускается из другого каталога):
cmake -L ../cmaketest
Дает:
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tgallagher/cmaketest-build
-- Cache values
CMAKE_BUILD_TYPE:STRING=
CMAKE_INSTALL_PREFIX:PATH=/usr/local
MY_OTHER_VAR:STRING=Hi
MY_VAR:STRING=Testing
Так, он показывает переменные из других файлов.Стоит разобрать всю сборку.Проблема в том, что он не будет отображать переменные, которые не помечены как CACHE.И он не будет отображать ничего, что кэшируется ВНУТРЕННИЙ, и будет отображаться только ДОПОЛНИТЕЛЬНО, если вместо -L используется -LA.
Если ваши переменные помечены как ВНУТРЕННИЕ или не CACHE'd вообще, то в CMake нет метода, чтобы вытащить его.Но переменные, не относящиеся к CACHE, должны быть временными, поэтому я не уверен, зачем они вам понадобятся вне среды сборки.