Maison  >  Article  >  développement back-end  >  Comment accéder aux variables CMake dans le code source C ?

Comment accéder aux variables CMake dans le code source C ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-02 16:23:02971parcourir

How to Access CMake Variables in C   Source Code?

Accès aux variables CMake dans le code source C

Problème :
Comment une variable CMake, telle que LIBINTERFACE_VERSION, être accessible et utilisé dans le code source C ?

Réponse :

Option 1 : Utiliser add_definitions

  • Passez la variable CMake comme définition à l'aide de add_definitions().
  • Exemple :

    <code class="cmake">add_definitions( -DVERSION_LIBINTERFACE=${LIBINTERFACE_VERSION} )</code>
  • Cela permet à la variable CMake d'être définie dans le code C comme une macro (#define).

Option 2 : Utiliser configure_file avec le modèle de fichier d'en-tête

  • Créer un modèle de fichier d'en-tête contenant la variable CMake références.
  • Exemple :

    <code class="cmake">// version_config.h.in
    #ifndef VERSION_CONFIG_H
    #define VERSION_CONFIG_H
    
    // define your version_libinterface
    #define VERSION_LIBINTERFACE @LIBINTERFACE_VERSION@
    
    // alternatively you could add your global method getLibInterfaceVersion here
    unsigned int getLibInterfaceVersion()
    {
      return @LIBINTERFACE_VERSION@;
    }
    
    #endif // VERSION_CONFIG_H</code>
  • Utilisez configure_file() pour générer le fichier d'en-tête en remplaçant les variables CMake par leurs valeurs.
  • Exemple :

    <code class="cmake">configure_file( version_config.h.in ${CMAKE_BINARY_DIR}/generated/version_config.h )
    include_directories( ${CMAKE_BINARY_DIR}/generated/ ) # Make sure it can be included...</code>
  • Inclure le fichier d'en-tête généré dans le code source C.

Exemple d'utilisation :

<code class="cpp">// Assuming version_config.h is included
std::string version = VERSION_LIBINTERFACE;</code>

Remarque :
La méthode configure_file() est plus extensible car elle permet d'ajouter des variables ou des définitions supplémentaires au fichier d'en-tête généré.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn