Um dem gcc zu setzen relative Dateinamen im debug-Informationen

Dem Projekt bin ich kompilieren verwendet CMake, die liebt absolute Pfadnamen.

Wenn ich das kompilieren mit debug-Informationen aktiviert, gcc legt diese langen Namen in .debug_str Abschnitte, die schlecht ist für das Debuggen. Ich hätte gerne kurze relativ-zu-Projekt-root-Pfadnamen, statt.

Gibt es eine Möglichkeit zu sagen, gcc-Streifen ein Teil von pathname, bevor emitting debug-Daten? Oder, vielleicht, gibt es einige Tools, die tun könnte, dass auf kompilierten Binärdateien?

Ich habe versucht, mit SET(CMAKE_USE_RELATIVE_PATHS ON) (das scheint zu sein, verpönt von devs) option, aber da bin ich mit out-of-source-builds, die Pfade sind noch nicht in form, ich würde wollen, dass Sie sein. I. e. Sie sind ./../src/mod_foo/foo.c statt mod_foo/foo.c.

  • ./../src/mod_foo/foo.c ist ein relativ Pfad...
  • Ja, aber nicht in Bezug auf das Projekt-root, obwohl (das ist bei ./../src)
  • Sie haben ein problem mit CMake, nicht mit gcc. GCC setzt in .debug_str genau, es wird als Kommandozeilen-argument.
  • Ich weiß nicht wirklich über die Methode. Ich sehe drei theoretisch mögliche Wege, dies zu tun, entweder man ist vollkommen in Ordnung bei mir: 1) CMake-Verzeichnis ändern, um Projekt-root und pass gcc-relativ-zu-Projekt-root-Quelle mit dem Namen; 2) eine Änderung dieser GCC Verhalten, so werde es mangle Dateinamen vor dem schreiben; 3) Patchen Sie die kompilierte Binärdatei mit einem tool zu beheben Dateinamen. Das problem ist, ich weiß nicht, wie zu tun alle der oben genannten.
InformationsquelleAutor drdaeman | 2012-03-07
Schreibe einen Kommentar