CMake: Navigieren durch mehrere Compiler für eine einzelne Sprache
CMake folgt dem Prinzip der Zuweisung eines einzelnen CMAKE_CXX_COMPILER für alle C-Quelldateien innerhalb einer CMakeLists.txt-Datei. Dieser Ansatz stellt Herausforderungen dar, wenn versucht wird, Host- und Cross-Compilation in einer einzigen CMakeLists.txt-Datei zu kombinieren.
Das Dilemma: Mehrere Compiler für dieselbe Sprache
Gemäß Bei der ursprünglichen Frage liegt der Kern des Problems darin, eine Lösung zu finden, um mehrere Compiler für dieselbe Sprache, insbesondere C, zu verwenden.
Der Kompromiss: Begrenzte Optionen
Leider , wird das Design von CMake dieser Anforderung nicht ohne weiteres gerecht. CMake verwaltet einen einzigen Satz von Compilereigenschaften, die für alle Ziele innerhalb einer CMakeLists.txt-Datei gelten. Um mehrere Compiler zu verwenden, ist es daher notwendig, CMake zweimal auszuführen.
Alternativen: Benutzerdefinierte Befehle oder separate Dateien
Eine Problemumgehung besteht im Wesentlichen in der Verwendung benutzerdefinierter Befehle Erstellen verherrlichter Shell-Skripte. Dieser Ansatz weicht jedoch vom gewünschten Ziel ab.
Eine sauberere Lösung besteht darin, die Kompilierungsprozesse in verschiedene CMakeLists.txt-Dateien zu unterteilen. Es verhindert zwar die Verknüpfung verschiedener Architekturen, macht aber redundanten Code überflüssig. Um die Konsistenz aufrechtzuerhalten, können gemeinsame Abschnitte der CMake-Skripte in separate Dateien extrahiert und über die Funktion include() eingebunden werden.
Nachteile: Bequemlichkeit der Komplexität
Die primäre Der Nachteil dieses Ansatzes ist der Verlust der Einzelbefehlskompilierung. Um dies zu mildern, kann ein Wrapper-Skript in einer bevorzugten Skriptsprache erstellt werden, um die erforderlichen CMake-Befehle aufzurufen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3