Accès aux variables CMake dans le code source C
Lorsque vous travaillez avec CMake, il est souvent souhaitable de stocker les informations à l'échelle du projet dans des variables centralisées. Cela permet une gestion et une accessibilité faciles. Cependant, accéder à ces variables directement dans le code source C peut être difficile.
Déclaration de variable CMake
Dans le scénario fourni, la variable CMake LIBINTERFACE_VERSION est définie pour stocker la bibliothèque. numéro de version :
<code class="cmake">SET(LIBINTERFACE_VERSION 1 CACHE INTEGER "Version of libInterface")</code>
Accès à la variable en C
Pour accéder à LIBINTERFACE_VERSION en C, vous pouvez utiliser l'une des deux méthodes suivantes :
1. add_definitions
La fonction add_definitions() vous permet de transmettre des variables CMake en tant que définitions au compilateur :
<code class="cmake">add_definitions( -DVERSION_LIBINTERFACE=${LIBINTERFACE_VERSION} )</code>
Dans votre code C, vous pouvez ensuite accéder à la variable comme :
<code class="cpp">#include <version_config.h> unsigned int version = VERSION_LIBINTERFACE;</code>
2. configure_file
Vous pouvez également utiliser configure_file() pour créer un modèle de fichier d'en-tête (par exemple, version_config.h.in) où les variables CMake sont remplacées :
<code class="cmake"># version_config.h.in #ifndef VERSION_CONFIG_H #define VERSION_CONFIG_H // Define version_libinterface #define VERSION_LIBINTERFACE @LIBINTERFACE_VERSION@ #endif // VERSION_CONFIG_H configure_file( version_config.h.in ${CMAKE_BINARY_DIR}/generated/version_config.h ) include_directories( ${CMAKE_BINARY_DIR}/generated/ )</code>
Dans votre C code, vous pouvez ensuite inclure le fichier d'en-tête généré :
<code class="cpp">#include "version_config.h" unsigned int version = VERSION_LIBINTERFACE;</code>
Cette approche offre une flexibilité supplémentaire pour incorporer plusieurs définitions ou variables dans votre fichier d'en-tête.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!