Zugriff auf CMake-Variablen im C-Quellcode
Bei der Arbeit mit CMake ist es oft wünschenswert, projektweite Informationen in zentralisierten Variablen zu speichern. Dies ermöglicht eine einfache Verwaltung und Zugänglichkeit. Der Zugriff auf diese Variablen direkt im C-Quellcode kann jedoch eine Herausforderung sein.
CMake-Variablendeklaration
Im bereitgestellten Szenario ist die CMake-Variable LIBINTERFACE_VERSION zum Speichern der Bibliotheken definiert Versionsnummer:
<code class="cmake">SET(LIBINTERFACE_VERSION 1 CACHE INTEGER "Version of libInterface")</code>
Zugriff auf die Variable in C
Um auf LIBINTERFACE_VERSION in C zuzugreifen, können Sie eine von zwei Methoden verwenden:
1. add_definitions
Mit der Funktion add_definitions() können Sie CMake-Variablen als Definitionen an den Compiler übergeben:
<code class="cmake">add_definitions( -DVERSION_LIBINTERFACE=${LIBINTERFACE_VERSION} )</code>
In Ihrem C-Code können Sie dann auf die Variable zugreifen als:
<code class="cpp">#include <version_config.h> unsigned int version = VERSION_LIBINTERFACE;</code>
2. configure_file
Sie können configure_file() auch verwenden, um eine Header-Dateivorlage (z. B. version_config.h.in) zu erstellen, in der CMake-Variablen ersetzt werden:
<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>
Innerhalb Ihres C Code können Sie dann die generierte Header-Datei einschließen:
<code class="cpp">#include "version_config.h" unsigned int version = VERSION_LIBINTERFACE;</code>
Dieser Ansatz bietet zusätzliche Flexibilität für die Einbindung mehrerer Definitionen oder Variablen in Ihre Header-Datei.
Das obige ist der detaillierte Inhalt vonWie greife ich aus dem C-Quellcode auf CMake-Variablen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!