mikrocontroller.net

Forum: Compiler & IDEs Welches Make nehmen?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Dino (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: void (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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?

Autor: Dino (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.
Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Crosscompiler (welcher?) kommt ohne jedwedes Zubehör? Echt?

Hast Du auf Deinem Rechner schon irgendein anderes Entwicklungssystem 
installiert?

Autor: void (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Udo K. (udok)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst auch das nmake von Visual Studio verwenden..

Autor: Dino (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe zwar kein Linux aber ginge auch unter Windows Cygwin und Make?

Autor: Philipp Klaus K. (Firma: Albert-Ludwigs-Universität) (pkk)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
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

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
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.

Autor: Frederic K. (warfley)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
Autor: Dino (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hannes J. (pnuebergang)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Auf Windows:
> make -v
GNU Make 4.1
Built for i686-w64-mingw32
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
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
Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Cyblord -. (cyblord)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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.

Autor: Niklas G. (erlkoenig) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: MakeLove (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich werf einfach mal CMAKE in den Raum
Ist ein Build Generator ...

Da kannst du dann für Ninja Files generieren.

Autor: Dino (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
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?

Autor: void (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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.

Autor: S .C. Harfmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dino (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
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.

Autor: Cyblord -. (cyblord)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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.

Autor: Zweig (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: S. R. (svenska)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Simon D. (jamen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: S. R. (svenska)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...)

Autor: J. V. (janvi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.