benötigen Hilfe bei der Verwendung eines Makefile von Drittanbietern, wenn Sie mein eigenes Projekt erstellen.einschließlich Makefile während der Verwendung von cmake
Antwort
Es gibt keinen Weg zu dem, was Sie direkt wollen. CMake bietet keine Möglichkeit, Dateien in die generierten Dateien einzuschließen. (dh: fügen Sie einen "3rdparty.mk
" in einen CMake ein, der Makefile
generiert wurde.) Sie können auch keinen "generated-file-type" (dh ein Makefile) in eine CMakeLists.txt
einfügen. CMake's ExternalProject lassen Sie das auch nicht.
Was Sie tun müssen, ist irgendwie "parse" das Makefile, das die Information hat, die Sie wünschen. Es gibt eine Vielzahl von Möglichkeiten, wie Sie dies tun können. Zum Beispiel könnten Sie einen Shell-Skript-Wrapper schreiben, der Ihr Makefile für das, was Sie benötigen, greptet, dann eine Cmake-Befehlszeile mit den definierten Variablen erstellt und sie ausgibt oder cmake
für Sie aufruft. Abhängig davon, wie komfortabel Sie mit Shell (oder Perl, Python, etc.) sind, könnten Sie denken, dass dies die beste Option ist.
Wenn Sie diese Werte nie (oder sehr selten) ändern, können Sie sie hart in Ihre CMakeLists.txt
(nicht empfohlen) oder in eine Datei können Sie include()
(besser).
Sie könnten auch in CMake-Land bleiben und CMake ExternalProject verwenden, um Ihnen zu helfen. ExternalProject verwenden, können Sie:
- Fetch Ihre 3rd-Party-Bibliotheken (herunterladen, kopieren, entpacken, usw.)
- Patch-Makefiles dieser Bibliotheken
- Run
make
auf diesen gepatcht Makefiles
Nun, dieser Patch, den ich erwähnt habe, müsste man selbst schreiben und bei der Quelle des Hauptprojekts bleiben. Der Inhalt dieses Patches wäre ein neues Ziel für make, das eine Datei schreiben würde, die Sie in Ihre CMakeLists.txt
über include()
schreiben könnten. Sie könnten einfach anfangen und dieses neue make-Ziel (z. B. make output_variables
) eine Liste der set()
Befehle an lib_A.cmake
schreiben lassen. Wenn Sie damit zufrieden sind, können Sie zu einer komplizierteren Ausgabe wechseln. wie das Schreiben einer lib_A-config.cmake
Datei, die CMake find_package()
würde verstehen.
Zugegeben, die letzte Option ist wahrscheinlich die komplizierteste, aber es könnte die Wartung Ihres primären Projekts erleichtern und die Schmerzen in Zukunft reduzieren. Sie werden auch ein tieferes Verständnis von CMake erlangen.
- 1. CMake und einschließlich anderer Makefiles
- 2. Konvertierung von Makefile zu CMake
- 3. Makefile entspricht in CMake
- 4. Makefile einschließlich SDL
- 5. Externes Makefile mit CMake einbinden
- 6. Einschließlich NSIS Skript in CMake
- 7. Druckvariablen einschließlich der Funktionen von Makefile und/oder variable Selbstbeobachtung
- 8. Unterschied zwischen der Verwendung von Makefile und cmake, um den Code zu kompilieren
- 9. Verwendung von LDFLAGS in Makefile
- 10. Einschließlich generierte Dateien in Makefile Abhängigkeiten
- 11. CMake-generierte Makefile enthält kein Ziel
- 12. cmake einschließlich h-Dateien aus anderen Verzeichnissen
- 13. Einschließlich Bibliotheken während Kompilierung
- 14. CMake + CPack: Gesamtes Verzeichnis (einschließlich Unterordner) installieren
- 15. Konvertieren von Makefile mit Circular Link-Abhängigkeit zu CMake
- 16. Makefile Verzeichnis Verwendung
- 17. Verwendung von nmake mit Wildcards im Makefile
- 18. Strange segfault bei der Verwendung von bash in Makefile
- 19. Wie Cmake Verwendung "-pthread" statt -lpthread "
- 20. Vorteile der Verwendung von CMake Option Befehl statt gesetzt?
- 21. Fehler bei der Verwendung von cmake auf vk_chopper
- 22. CMake Konfigurationsproblem bei der Verwendung von Qt Creator
- 23. Speicherlecks während der Verwendung von Doppel-Array
- 24. Verhindern CSRF während der Verwendung von CORS?
- 25. Zugriffssteuerelemente während der Verwendung von MasterPage
- 26. Verbindungsfehler während der Verwendung von Cqlsh
- 27. Schatten während der Verwendung von mindmup-editabletable.js
- 28. Framework Blackboxing während der Verwendung von Webpack?
- 29. autoActivityTracking während der Verwendung von google-services.json
- 30. Unterschiedlicher Textstil während der Verwendung von listSeparatorTextStyleView
"Ich habe Folgendes versucht, aber es funktioniert nicht ..." Wie funktioniert es nicht? Was hast du erwartet? Was ist passiert? – nega
Sie müssen cmake sagen, wie das zu interpretieren ist, was das gmake + Makefile macht. CMake wird nicht nur einige zufällige Strings magisch importieren. Woher sollte es das richtig machen? Wie würde es das sicher machen? Vielleicht, wenn Sie ein Beispiel für die Ausgabe von gmake + makefile angegeben haben und was Sie mit dieser Ausgabe machen wollen? – nega
was meinst du mit "machen"? nur auf dem Terminal drucken? Wiederaufbau Ihrer 3rd-Party-Bibliotheken mit diesen Flags? diese Flags in eine Datei schreiben? – nega