Comment stocker les informations de base, comme le nom du système (Linux
), le compilateur utilisé gcc
) ou l'architecture (x86_64
), dans un fichier que j'inclus dans mon binaire?CMake: Stocker les informations de construction/système en binaire
Tout le code pour écrire un tel fichier .in
est déjà présent, sauf que les variables CMake correspondantes sont toutes vides, par ex. CMAKE_SYSTEM
ou CMAKE_SYSTEM_PROCESSOR
:
set(NEWLINE "\\\\n")
file(WRITE ${CMAKE_BINARY_DIR}/update_buildflags.cmake "
file(WRITE \${DST} \"#define BUILDFLAGS \\\"
ARCH=\${CMAKE_SYSTEM}${NEWLINE}
COMP=\${CMAKE_SYSTEM_PROCESSOR}${NEWLINE}
BUILD=\${CMAKE_BUILD_TYPE}${NEWLINE}\\\"\n\")")
add_custom_target(update_buildflags COMMAND ${CMAKE_COMMAND}
-DDST=${PROJECT_SOURCE_DIR}/src/buildflags.c
-P ${CMAKE_BINARY_DIR}/update_buildflags.cmake)
Cet objectif personnalisé est ensuite ajouté comme dépendance pour le fichier binaire principal et le fichier résultant src/buildflags.c
ressemble à ceci:
#define BUILDFLAGS " ARCH=\n COMP=\n BUILD=\n"
Pourquoi sont les utilisés des variables CMake vides bien les imprimer avec message()
affiche les informations correctes?
CMAKE_SYSTEM: Linux-4.4.0-92-generic
Quelle est la question? – arrowd
J'ai modifié la question. – mattmilten