Ich kompiliere ein ziemlich großes Projekt aus dem Quellcode. Die Kompilierung endet immer mit: error: ungültige Konvertierung von 'const char *' nach 'char *' [-fpermissive]
Ich habe dieses Projekt bereits vor einem Jahr zusammengestellt. Ich kenne also eine Lösung dafür. Tatsächlich habe ich mehr Lösungen gefunden:
- Hinzufügen einer Typumwandlung zur entsprechenden Zeile des CPP-Codes (Es gab endlose Änderungen in jeder Datei. Also habe ich die nächste Lösung gefunden.)
- Ändern eines Makefiles, um diese Datei mit der Option -fpermissive zu kompilieren. (Ich musste viele Zeilen in jedem Makefile ändern, um eine noch bessere Lösung zu finden.)
- "g ++" oder "gcc" wurde in einer Variablen gespeichert, daher habe ich -fpermissive zu diesen Variablen hinzugefügt.
Dies ist die beste Lösung, die ich habe. Es reicht aus, diese Option einmal zu jedem Makefile hinzuzufügen. Leider hat diese Software eine große Anzahl von Unterverzeichnissen. Ich muss also mehr als 100 Makefiles ändern. Ich habe vor einem Jahr den ganzen Tag gebraucht.
Gibt es eine Möglichkeit, dies schneller zu tun?
Was ist damit? alias gcc = 'gcc -fpermissive' Ich kenne mich mit Aliasen nicht aus. Aber es sollte einfach sein, dies zu versuchen. Ist die Syntax korrekt? Und ist das richtig? alias g ++ = 'g ++ -fpermissive'? Und muss ich den Alias irgendwie exportieren? Wird das make-Programm den Alias respektieren?
Sollte ich vielleicht das ./configure-Skript ändern? Oder die ./configure.in? Oder eine andere Datei?
make
werde ich den Alias allerdings nicht respektieren.Alte Frage, ich weiß, aber zum späteren Nachschlagen:
Aliasing
gcc
undg++
im.bashrc
Willen funktionieren nicht im Innerenmake
. Sie können diemake
Variablen jedoch überschreibenCC
undCXX
aus dem.bashrc
:Das erfordert natürlich, dass Sie
$(CC)
und$(CXX)
in expliziten Regeln in Ihrem Makefile, aber Sie sollten das trotzdem tun. Sie werden standardmäßig in den impliziten Regeln verwendet.quelle