cmake_minimum_required(VERSION 3.7.2) project (dump-build-information) # set build type to Release by default set(CMAKE_BUILD_TYPE Release) # stuff for dummy parameter extraction add_executable(dummy dummy.cpp) set_target_properties(dummy PROPERTIES COMPILE_FLAGS ${BUILD_FLAGS} -frecord-gcc-switches) # put all the information into one header file add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/buildinformation.h COMMAND echo \"\#define USED_FLAGS \\\"\"`readelf -p .GCC.command.line ${CMAKE_CURRENT_BINARY_DIR}/dummy | grep -v -e dummy -e "-frecord-gcc-switches" | grep -e \"\\[.*\\]\" | cut -d\\] -f2- | tr -d \"\\n\"`\\\" >> ${CMAKE_CURRENT_BINARY_DIR}/buildinformation.h COMMAND echo \"\#define GIT_VERSION \\\"\"`git describe --dirty --always --tags`\\\" >> ${CMAKE_CURRENT_BINARY_DIR}/buildinformation.h COMMAND echo \"\#define USED_COMPILER \\\"\"`${CMAKE_C_COMPILER} --version | head -n1`\\\" >> ${CMAKE_CURRENT_BINARY_DIR}/buildinformation.h DEPENDS dummy ) # add the build folder to the includes include_directories("${CMAKE_CURRENT_BINARY_DIR}") # build the "real" target add_executable(dump-build-information main.cpp ${CMAKE_CURRENT_BINARY_DIR}/buildinformation.h)