Guten Abend, habe einen Cross-Compiler und möchte dafür eine Make Build-Umgebung erstellen. Die Sourcen liegen in unterschiedlichen Ordnern, welches Make würdet ihr verwenden? Dino
Dino schrieb: > welches Make würdet ihr verwenden? $ make -v GNU Make 4.1 Built for x86_64-pc-linux-gnu (...) War das wirklich deine Frage?
void schrieb: > War das wirklich deine Frage? Ich bin auf einem Windows-System, was könntet Ihr dafür empfehlen?
Beitrag #5692085 wurde von einem Moderator gelöscht.
Dein Crosscompiler (welcher?) kommt ohne jedwedes Zubehör? Echt? Hast Du auf Deinem Rechner schon irgendein anderes Entwicklungssystem installiert?
Dino schrieb: > Ich bin auf einem Windows-System, was könntet Ihr dafür empfehlen? Make for Windows: - http://gnuwin32.sourceforge.net/packages/make.htm Cygwin - https://de.wikipedia.org/wiki/Cygwin MinGW - https://de.wikipedia.org/wiki/MinGW Linux bash shell auf Windows 10: - https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/
Ich würde zu GNU make raten. Das ist am weitesten verbreitet, damit gut dokumentiert. Es ist auch auf vielen Systemen verfügbar und relativ mächtig. Die Alternative wäre BSD make, aber dessen Verwendung dürfte nur sinnvoll sein, wenn man in ein entsprechendes BSD-Umfeld eingebettet ist, oder auf maximale Portabilität achten muss (die eigene Software also z.B. unter OpenBSD direkt kompilierbar sein soll, ohne vorherige Installation eines GNU make). Philipp
Dino schrieb: > aber ginge auch unter Windows Cygwin und Make? Cygwin ist sogar eigens für Windows gemacht worden, warum wohl endet der Name auf -win? Bevor man aber mit übergewichtigen Elefanten wirft, sollte der Threadstarter mal erwähnen, was für einen Compiler er da verwendet; vielleicht hat er das mitgelieferte Make einfach übersehen, oder er hat schon ein anderes, da er auf seinem Rechner noch einen anderen Compiler installiert hat.
Dino schrieb: > Ich habe zwar kein Linux aber ginge auch unter Windows Cygwin und Make? Bei Cygwin solltest du aber aufpassen, ähnlich wie beim WSL sind die berechtigungen für von Cygwin erstellte Ordner/Dateien etwas kaputt (zumindest aus der Sicht von Windows, für Cygwin/WSL ists natürlich alles in bester Ordnung) was dann lustige Seiteneffekte hat. Z.B. wenn du Visual Studio (Oder konsorten wie Atmel Studio) verwendest funktioniert IntelliSense nicht auf diesen Dateien und Ordnern, was die Funktionalität von Visual Studio drastisch reduziert. Daher möchtest du womöglich lieber MinGW statt Cygwin nehmen, welches dir auch die wichtigsten GNU Programme bereitstellt, u.a. auch GNU make. Als Faustregel, Cygwin abgeschlossen verwenden (also alles was du mit Cygwin machst sollte im Cygwin system bleiben) und wenn du GNU software unter Windows benötigst die du auch mit Windows Programmen verwenden willst, nimm MinGW
:
Bearbeitet durch User
Hallo, meine SW ist für verschiedene embedded Zielhardware, jedoch möchte ich nur eine Make-Umgebung für alle Projekte und lediglich die EXE-Files des Compiler etc. einbinden, ist das mit GNU-Make möglich? Dino
Dino schrieb: > ist das mit GNU-Make möglich? Ja. Aber das geht auch mit jedem anderen Make - auch Microsofts nmake kann das; wenn Du also aus irgendeinem Grund schon irgendein Visual Studio auf Deinem Rechner installiert hast, kannst Du also das damit mitgelieferte nmake verwenden. Wenn Du Deine makefiles nicht zu sehr an die speziellen Gewohnheiten eines bestimmten makes anpasst, sollte ein Wechsel auch kein Problem sein. > The main things to be beware of using GNU Make are all the extended function notations for mapping file names (macros) into useful values. While they are undoubtedly useful, they are also a trap for portability. Quelle: https://stackoverflow.com/questions/2278151/how-similar-different-are-gnu-make-microsoft-nmake-and-posix-standard-make
Auf Windows:
1 | > make -v |
2 | GNU Make 4.1 |
3 | Built for i686-w64-mingw32 |
4 | Copyright (C) 1988-2014 Free Software Foundation, Inc. |
5 | License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> |
6 | This is free software: you are free to change and redistribute it. |
7 | There is NO WARRANTY, to the extent permitted by law. |
MSYS2 installieren https://sourceforge.net/projects/msys2/files/latest/download, dann die aktuelle Version 4.2 https://sourceforge.net/projects/msys2/files/REPOS/MSYS2/i686/make-4.2.1-1-i686.pkg.tar.xz/download über den MSYS2 Paketmanager installieren. Wer unbedingt Version 4.1 haben möchte, nach "make-4.1" im Paketmanager suchen.
:
Bearbeitet durch User
Ich würde sagen nimm das Make das funktioniert. Ich habe 7 Verscheidene Make.exe und alle sind unterschiedlich im verhalten. Ist bei alten Projekten immer ein nettes herum probieren welches nun das richtige ist. VG
Dino schrieb: > Hallo, > > meine SW ist für verschiedene embedded Zielhardware, jedoch möchte ich > nur eine Make-Umgebung für alle Projekte und lediglich die EXE-Files des > Compiler etc. einbinden, ist das mit GNU-Make möglich? Ich glaube das richtige Make ist dein kleinstes Problem. Ich würde es aus dem Bauch heraus mal auf Platz 763 deiner Probleme einordnen.
Die Windows Build Tools welche zu GNU MCU Eclipse gehören enthalten ein make und eine Busybox-Shell; damit kann man viele typische Makefiles verarbeiten. Die haben eigentlich gar nichts mit Eclipse zu tun und können problemlos separat installiert werden: https://github.com/gnu-mcu-eclipse/windows-build-tools/releases Ist im Gegensatz zu MinGW/Cygwin sehr kompakt und funktioniert meiner Erfahrung nach stabiler als ein paar andere Windows-make-Varianten.
Ich werf einfach mal CMAKE in den Raum Ist ein Build Generator ... Da kannst du dann für Ninja Files generieren.
Cyblord -. schrieb: > Ich glaube das richtige Make ist dein kleinstes Problem. Ich würde es > aus dem Bauch heraus mal auf Platz 763 deiner Probleme einordnen. Könntest du mir 1-2 mitteilen?
Dino schrieb: > Könntest du mir 1-2 mitteilen? Beispielsweise alle Probleme welche aus den Antworten auf die Fragen von Rufus resultieren, die du beharrlich nicht beantworten willst.
Udo K. schrieb: > Du kannst auch das nmake von Visual Studio verwenden.. Besser nicht, da in Details inkompatibel zu gnu make http://nmake.alcatel-lucent.com/faq/gmake.html >MinGW/Cygwin wäre auch meine Empfehlung, neben make kann man auch die anderen shell-"tools" wie wc, grep, sed, ... gut gebrauchen.
void schrieb: > Beispielsweise alle Probleme welche aus den Antworten auf die Fragen von > Rufus resultieren, die du beharrlich nicht beantworten willst. Gibt es beim Make Inkompatibilitäten mit Cross-Compilern und welche wären das zum Beispiel? Möchte doch eine Lösung haben für irgendeinen Cross-Compiler.
Dino schrieb: > Gibt es beim Make Inkompatibilitäten mit Cross-Compilern und welche > wären das zum Beispiel? Möchte doch eine Lösung haben für irgendeinen > Cross-Compiler. Da hätten wir schon ein Problem: Du denkst make hat irgendwas mit dem Compiler zu schaffen. Abgesehen von der Tatsache dass es ihn aufruft, ist das aber nicht der Fall. Dann liegen Source Dateien, abgesehen von Mini Projekten, meistens in mehrere Ordnern. Das ist kein Kriterium für ein bestimmtes make.
Dino schrieb: > Guten Abend, > > habe einen Cross-Compiler und möchte dafür eine Make Build-Umgebung > erstellen. Die Sourcen liegen in unterschiedlichen Ordnern, welches Make > würdet ihr verwenden? CMAKE -> sehr Leistungsfähig. Aber wie schon geschrieben funktionieren tut jedes. CMAKE ist in Combination mit CLion als IDE ein sehr effektive Entwicklungsumgebung. Aber man muss sich halt damit Beschäftigen...
Zweig schrieb: > Aber wie schon geschrieben funktionieren tut jedes. Wobei CMake keinen Compiler aufruft, sondern nur ein Makefile (oder ein Visual Studio-Projekt, oder eine Ninjadatei, oder oder oder) erzeugt. Was mich an CMake stört, ist die deklarative Beschreibung... wenn ich damit etwas machen will, was die CMake-Entwickler nicht vorgesehen haben, dann wird das schwierig. Für gewöhnliche C/C++-Entwicklung ist es super.
Ich verwende auf Windows auch am liebsten CMake zusammen mit Ninja. Das funktioniert meiner Erfahrung nach besser als Make in Verbindung mit irgendeinem Terminalemulator. Insbesondere mit Cygwin ist die Einbindung in Entwicklungsumgebungen wie VS-Code nicht ganz praktisch, da dauert es schon mal recht lange bis Make gestartet wird und das ist einfach lästig. Außerdem finde ich die Konfiguration in CMake einfacher, als in Make alles selber zu tippen. Am schönsten ist es natürlich, wenn einfach alles funktioniert, wie in einer guten IDE, aber das ist halt nicht immer gegeben. Ninja ohne CMake kann ich nicht wirklich empfehlen. Standalone ist Make dann doch komfortabler.
Simon D. schrieb: > Ninja ohne CMake kann ich nicht wirklich empfehlen. Ninja ist ohne Generator nicht zu gebrauchen. Das ist aber auch Absicht der Entwickler. (Ich nutze Ninja zwangsweise, weil Android-Buildsystem...)
>Gibt es beim Make Inkompatibilitäten mit Cross-Compilern
die kommen meistens vom Anwender nicht vom Compiler. Z. Bsp. wenn make
die Dateinamen mit Umlauten oder Pfade mti / anstelle \ nicht kapiert
oder wenn man meint sonst irgendwelche Make Tricks nutzen zu müssen wie
etwa vordefinierte Suffixregeln für Compiler oder lex und yacc was es
auf Windows gar nicht gibt. Ansonsten könnte ich mir auch vorstellen
ganz ohne make auszukommen da die uC Projekte im Gegensatz zu einem
Linux Kernel typischwerweise ziemlich vernachlässigbare Linkzeiten
haben.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.