2012-03-27 13 views
1

Ich kompilierte mein Programm mit Intel C++ - Compiler für Windows (von Intel Composer 2011), und erhielt eine Fehlermeldung, dass libmmdd.lib nicht gefunden werden kann. Ich habe dieses Problem gegooglet, und einige Leute sagten, dass ich meinen Compiler neu installieren muss, und ich tat es; Das Problem wurde jedoch nicht behoben. Daher habe ich im Verzeichnis des Intel-Compilers nachgesehen und festgestellt, dass diese Datei (und andere erforderliche Bibliotheken) ebenfalls unterVerknüpfung zum Intel Compiler-Verzeichnis zur Verwendung in Makefile

% CompilerDirectory% \ compiler \ lib \ ia32

gespeichert sind

Es macht keinen Sinn, in die make-Datei den gesamten absoluten Pfad der Bibliotheken zu schreiben, also begann ich zu suchen, und ich konnte nur% mklroot% auf das Mathe-Kernel-Verzeichnis finden. Und selbst mit einem -L% mklroot%/../compiler/lib/ia32-Ansatz zum Verknüpfen konnte ich nicht korrekt mit den Bibliotheken verlinken, so dass ich schließlich eine lahme Bewegung machte, um das Problem zu lösen, das heißt, ich kopierte jede Datei Der Linker fragt nach dem Quellverzeichnis, und so wurde das Problem vorübergehend gelöst.

Da dieser Weg zur Lösung des Problems nicht der beste ist, frage ich mich, ob es eine Möglichkeit gibt, mit diesen Bibliotheken zu verknüpfen, ohne die Dateien kopieren zu müssen. Es ist seltsam, weil der Compiler seine eigenen Bibliotheken alleine finden sollte, aber ... ich weiß nicht ...!

Irgendwelche Ideen? gibt es etwas wie% compilerroot%, das auf das Compiler-Verzeichnis zeigt und das ich in mein Makefile schreiben könnte (oder eigentlich mein qmake, da ich Qt verwende).

Vielen Dank für alle Bemühungen :-)

Antwort

0

Statt %mklroot% der Verwendung versuchen $$(mklroot) oder $(mklroot).

können Sie finden die Erklärung here:

Variablen verwendet werden können, um den Inhalt der Umgebungsvariablen zu speichern. Diese können zu dem Zeitpunkt ausgewertet werden, zu dem qmake ausgeführt wird, oder in das generierte Makefile für die Evaluierung, wenn das Projekt erstellt wird, in aufgenommen werden.

Um den Inhalt einer Umgebungswert zu erhalten, wenn qmakeis Lauf verwendet die $$ (...) Betreiber:

DESTDIR = $$ (PWD)
Nachricht (Das Projekt wird in $ installiert werden $ DESTDIR)

In der obigen Zuordnung wird der Wert der Umgebungsvariablen PWD gelesen, wenn die Projektdatei verarbeitet wird.

Um den Inhalt einer Umgebungswert zu dem Zeitpunkt zu erhalten, wenn die Makefile erzeugt verarbeitet wird, verwenden Sie die $ (...) Betreiber:

DESTDIR = $$ (PWD)
Nachricht (Das Projekt wird in $$ DESTDIR)

DESTDIR = $ (PWD)
Nachricht (das Projekt im Wert von PWD)
Nachricht installiert werden installiert werden (wenn das Makefile verarbeitet wird.)

In der obigen Zuweisung wird der Wert von PWD sofort gelesen, wenn die Projektdatei verarbeitet wird, aber $ (PWD) DESTDIR in dem generierten Makefile zugewiesen wird.Dies macht den Build-Prozess flexibler als wie die Umgebungsvariable korrekt festgelegt wird, wenn das Makefile verarbeitet wird.

EDIT:
Es ist seltsam, dass weder $$ (mklroot) noch $ (mklroot) gab das Ergebnis Sie erwarten würden. Ich habe einen einfachen Test, um zu überprüfen, was ich oben geschrieben hätte: set mklroot=C:\intel_libs

  • das Ergebnis des previos Schrittes Bestätigt:

    1. ein Befehl
    2. Erstellt eine neue Umgebungsvariable ‚mklroot‘ mit einem Testwert Prompt Geöffnet: echo %mklroot%. Ich habe C:\intel_libs
    3. Gestellt Ihre 3 Qmake Funktionen am Ende meiner .proDatei:
      Warnung ($ (% MKLROOT%))
      Warnung ($ (MKLROOT))
      Warnung ($$ (MKLROOT))
    4. Ran qmake: qmake. Das Ergebnis:
      Project WARNING:
      Project WARNING: c:\intel_libs
      Project WARNING: c:\intel_libs

    Wie Sie die 2. und die 3. sehen Warnung() angezeigt, um die Zeichenfolge ich in die Umgebungsvariable gesetzt.

  • +0

    Danke für die Antwort. Ich werde das versuchen und Sie wissen lassen, wie es geht. Es tut mir leid, dass ich mich jetzt bewege und es nicht sofort ausprobieren kann. – Sam

    +0

    Keiner dieser Befehle in qmake gab die richtigen Pfade, wenn Qmake Warnung ($ (% MKLROOT%)) Warnung ($ (MKLROOT)) ausgeführt wird Warnung ($$ (MKLROOT)) Irgendwelche Vorschläge? – Sam

    +0

    Das ist seltsam. Ich werde morgen zu einem Computer mit einer Entwicklungsumgebung gehen. Dann werde ich es überprüfen. – Bill

    Verwandte Themen