1. Beurteilungsmethode im C/C++-Code
1.1 Beurteilungsmethode der Desktop-Plattform
In C++ können Sie Präprozessormakros verwenden, um zu überprüfen, ob es sich bei dem System um ein UNIX-System handelt. Im Folgenden sind einige verfügbare Makros aufgeführt: __unix__
: True auf UNIX-Systemen. __linux__
: True auf Linux-Systemen. _WIN32
: True auf Windows-Systemen. __APPLE__
: Stimmt auf Mac-Systemen.
Wenn Sie beispielsweise überprüfen möchten, ob Ihr Code auf einem UNIX-System kompiliert wurde, können Sie Folgendes verwenden:
#if defined(__unix__) || defined(__linux__)
// UNIX系统代码
#elif defined(_WIN32)
// WINDOWS 系统
#elif defined(__APPLE__)
// MAX 系统
endif
Dadurch werden Codeblöcke basierend auf Präprozessormakros ausgewählt. __unix__
Wenn oder definiert ist __linux__
, wird der erste Codeblock ausgewählt, andernfalls werden die restlichen Codeblöcke ausgewählt.
1.2 Beurteilungsmethode der mobilen Plattform
__ANDROID__
: Stimmt im Android-Code. __APPLE__
und __arm__
: In iOS müssen beide erfüllt sein
#ifdef __ANDROID__
// Android 操作系统
#elif defined(__APPLE__) && defined(__arm__)
// iOS代码
#else
// 非Android和iOS代码
#endif
Auf dem Android-Betriebssystem __ANDROID__
wird das Makro definiert, sodass __ANDROID__
der Wert „true“ ist. Auf dem iOS-Betriebssystem __APPLE__
ist das Makro definiert, und da iOS auf macOS basiert, __arm__
ist das Makro auch definiert, sodass __APPLE__
&& __arm__
als „true“ ausgewertet wird. Wenn der Code auf einem anderen Betriebssystem als Android und iOS ausgeführt wird, werden diese Makros nicht definiert, sodass der Wert von __ANDROID__
und __APPLE__
&& __arm__
falsch ist.
Bitte beachten Sie, dass mit dieser Methode nur festgestellt werden kann, ob es sich um ein Android- oder iOS-Betriebssystem handelt, nicht jedoch die spezifische Version oder der Typ des Betriebssystems. Wenn Sie detailliertere Informationen zum Betriebssystem benötigen, müssen Sie möglicherweise andere Methoden oder Bibliotheken verwenden, um Systeminformationen zu erhalten.
2. Bestimmen Sie den Betriebssystemtyp in CMakeLists.txt
2.1 Beurteilung der Desktop-Plattform
- Methode eins
if(WIN32)
# Windows 系统
elseif(OSX)
# Mac 系统
elseif(UNIX)
# Unix系统
else()
# 其他系统
endif()
- Weg zwei
cmake_minimum_required(VERSION 3.10)
project(DemoProject)
include(CMakeForceCompiler)
CMakeForceCompiler(
gcc
CMAKE_C_FLAGS_INIT "-std=c11"
CMAKE_CXX_FLAGS_INIT "-std=c++11"
)
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
message(STATUS "Running on Linux操作系统")
# 在这里添加适用于Linux的操作系统的特定配置
elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
message(STATUS "Running on Windows操作系统")
# 在这里添加适用于Windows的操作系统的特定配置
elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
message(STATUS "Running on macOS/iOS操作系统")
# 在这里添加适用于macOS/iOS的操作系统的特定配置
else()
message(STATUS "Running on an unknown operating system")
# 在这里添加适用于其他操作系统的通用配置
endif()
Im obigen Code ist CMAKE_SYSTEM_NAME eine vordefinierte Variable, die den Namen des aktuellen Betriebssystems enthält. Dann verwenden wir if- und elseif-Anweisungen, um den Namen des Betriebssystems zu überprüfen und den entsprechenden Codeblock basierend auf dem Ergebnis der Übereinstimmung auszuführen. Sie können innerhalb jedes Codeblocks spezifische Konfigurationen oder Anweisungen hinzufügen, die für bestimmte Betriebssysteme gelten.
Beachten Sie, dass dies nur ein einfaches Beispiel ist, um zu veranschaulichen, wie in der Datei CMakeLists.txt Betriebssystembeurteilungen vorgenommen werden. Die spezifischen Beurteilungsbedingungen und Konfiguration können je nach Ihren Projektanforderungen variieren.
2.2 Beurteilung der mobilen Plattform
Für die mobile Beurteilung übergebe ich normalerweise die CPU-Architektur über die Option cmake -D und beurteile sie dann in CMakeLists.txt
cmake -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a .