
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 :
1 | <code class = "cmake" >add_definitions( -DVERSION_LIBINTERFACE=${LIBINTERFACE_VERSION} )</code>
|
Copier après la connexion
- 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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <code class = "cmake" >
#ifndef VERSION_CONFIG_H
#define VERSION_CONFIG_H
#define VERSION_LIBINTERFACE @LIBINTERFACE_VERSION@
unsigned int getLibInterfaceVersion()
{
return @LIBINTERFACE_VERSION@;
}
# endif
|
Copier après la connexion
- Utilisez configure_file() pour générer le fichier d'en-tête en remplaçant les variables CMake par leurs valeurs.
-
Exemple :
1 2 | <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>
|
Copier après la connexion
- Inclure le fichier d'en-tête généré dans le code source C.
Exemple d'utilisation :
1 2 | <code class = "cpp" >
std::string version = VERSION_LIBINTERFACE;</code>
|
Copier après la connexion
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!