ubuntuusers.de

[clang++] Pfade für Header und Libs erweitern

Status: Gelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

Glocke

Avatar von Glocke

Anmeldungsdatum:
1. März 2009

Beiträge: Zähle...

Wohnort: Thüringen

Hi, ich kompiliere öfter mal Libs wie SFML oder Thor (eine SFML-Erweiterung) von Hand. Dazu kommen ein paar eigene kleine Utility-Libs .. Und da ich prinzipiell nicht in den Standard-Installationsverzeichnissen (wo Header und SharedLibs standardmäßig liegen) rumspielen will, habe ich mir eine eigene Struktur angelegt: Meine "eigenen" Header liegen in /opt/cpp/include, die zugehörigen SharedLibs in /opt/cpp/lib. Nun muss ich natürlich jedesmal wenn ich etwas kompiliere was diese verwendet -I/opt/cpp/include -L/opt/cpp/lib mit angeben, sowie den Suchpfad via LD_LIBRARY_PATH erweitern, damit ich die Anwendung zum Schluss starten kann, ohne dass Libs nicht gefunden werden.

Welche Möglichkeiten habe ich den Standardsuchpfad für Header und Libs zu erweitern? Ich würde meinen ganzen Buildprozess gerne "aufräumen". Als Compiler verwende ich clang++3.5.

LG Glocke

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13204

Glocke schrieb:

Welche Möglichkeiten habe ich den Standardsuchpfad für Header und Libs zu erweitern? Ich würde meinen ganzen Buildprozess gerne "aufräumen". Als Compiler verwende ich clang++3.5.

Im Prinzip hast Du ja schon beschrieben, was Du machen musst. Ggf. schau doch mal bei dem Build-Tool Deiner Wahl (make?) nach, wie man Vorgaben setzt oder über Umgebungsvariablen beeinflusst. Im Zweifel musst Du halt einen geteilten Ansatz fahren: im Makefile Variablen definieren, die die Optionen passend ergänzen (kann man auch über ein Make-Include wiederverwenden) und in Deiner ~/.bash_login o.ä. setzt Du LD_LIBRARY_PATH.

Glocke

(Themenstarter)
Avatar von Glocke

Anmeldungsdatum:
1. März 2009

Beiträge: 880

Wohnort: Thüringen

rklm schrieb:

kann man auch über ein Make-Include wiederverwenden

Naja ich will mein /opt/cpp Verzeichnis eben nicht explizit angeben. Mein Ziel ist es verstärkt mit CMake zu arbeiten um mein Projekt später auch unter Windows relativ einfach kompilieren zu können .. daher will ich OS-spezifische Pfadangaben (wie /opt/cpp, was es auf Windows ja nicht geben kann) verhindern.

Kann ich irgendwie mit Symlinks erreichen, dass ich dem Compiler vorgaukel meine Header würden sich im Standardpfad (/usr/include?) befinden (analog libs)?

/EDIT: Oder ich verstehe dich falsch... meinst du ich solle mir z.B. eigene Umgebungsvariablen MY_HEADER_DIR und MY_LIB_DIR definieren und die im Buildprozess verwenden? Das wäre eine Idee 👍

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13204

Glocke schrieb:

/EDIT: Oder ich verstehe dich falsch... meinst du ich solle mir z.B. eigene Umgebungsvariablen MY_HEADER_DIR und MY_LIB_DIR definieren und die im Buildprozess verwenden? Das wäre eine Idee 👍

Das, oder die Standardvariablen verwenden, die make nutzt.

Glocke

(Themenstarter)
Avatar von Glocke

Anmeldungsdatum:
1. März 2009

Beiträge: 880

Wohnort: Thüringen

Ok, danke ☺ Ich habe jetzt für jedes Library Header Verzeichnis und jedes resuliterende Shared Object einen Symlink erstellt... Funktioniert super!

/EDIT: Außer beim ausführen - da werden die Libs nur gefunden wenn ich den LD_LIBRARY_PATH anpasse. Kann ich das irgendwie beim Login in die Shell machen?

Antworten |