Detect CMake generator from CMakeCache.txt
The CMAKE_GENERATOR cache variable records the CMake generator used to configure the CMake project in the CMakeCache.txt CMake cache file. Surprisingly, the cmake -LA option does not emit the CMAKE_GENERATOR value.
Thus, parsing CMakeCache.txt will give the previously used CMake generator. This is relevant in automated processes such as CI/CD systems that may build for numerous configurations and generators. This parsing can be trivially done in scripts in many coding languages. Here we give an example in CMake script “detect_gen.cmake”:
cmake_minimum_required(VERSION 3.21)
file(REAL_PATH ${bindir} bindir EXPAND_TILDE)
file(READ "${bindir}/CMakeCache.txt" _cache)
if(_cache MATCHES "CMAKE_GENERATOR:INTERNAL=([^ \n]+)")
set(CMAKE_GENERATOR ${CMAKE_MATCH_1})
message(STATUS "Detected CMake generator: ${CMAKE_GENERATOR}")
else()
message(FATAL_ERROR "Failed to detect CMake generator")
endif()
This script is used like:
cmake -Dbindir=/path/to/build -P detect_gen.cmake