Zugriff auf CMake-Variablen im C-Quellcode
Problem:
Wie kann eine CMake-Variable, z LIBINTERFACE_VERSION, innerhalb des C-Quellcodes aufgerufen und verwendet werden?
Antwort:
Option 1: Verwendung von add_definitions
- Übergeben Sie die CMake-Variable als Definition mit add_definitions().
-
Beispiel:
1 | <code class = "cmake" >add_definitions( -DVERSION_LIBINTERFACE=${LIBINTERFACE_VERSION} )</code>
|
Nach dem Login kopieren
- Dadurch kann die CMake-Variable im C-Code als definiert werden Makro (#define).
Option 2: configure_file mit Header-Datei-Vorlage verwenden
- Erstellen Sie eine Header-Datei-Vorlage, die die CMake-Variable enthält Referenzen.
-
Beispiel:
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
|
Nach dem Login kopieren
- Verwenden Sie configure_file(), um die Header-Datei zu generieren und die CMake-Variablen durch ihre Werte zu ersetzen.
-
Beispiel:
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>
|
Nach dem Login kopieren
- Fügen Sie die generierte Header-Datei in den C-Quellcode ein.
Beispielverwendung:
1 2 | <code class = "cpp" >
std::string version = VERSION_LIBINTERFACE;</code>
|
Nach dem Login kopieren
Hinweis:
Die Methode configure_file() ist erweiterbarer, da sie das Hinzufügen zusätzlicher Variablen oder Definitionen zur generierten Header-Datei ermöglicht.
Das obige ist der detaillierte Inhalt vonWie greife ich auf CMake-Variablen im C-Quellcode zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!