2010-11-30 15 views
0

J'ai un problème avec mon projet. Je le développe sur Qt Creator, et j'ai besoin d'ajouter un fichier .lib à mon projet. Donc, j'ai écrit cette ligne dans mon .pro:Comment inclure dynamiquement un fichier .lib?

LIBS += "C:\My_Path\My_Project\lib\file.lib" 

Cela fonctionne très bien. Mon seul problème est que j'ai besoin d'écrire le chemin complet du fichier .lib. Comme il s'agit d'un projet de groupe, il doit être compilable sur d'autres ordinateurs sans changer le chemin de ce fichier à chaque fois.

J'ai essayé beaucoup de syntaxes, comme:

LIBS += -L"lib/" -l"file.lib" 

ou

LIBS += "lib\file.lib" 

ou

LIBS += "file.lib" 

(mettre le fichier .lib à la racine et l'ajouter au projet Qt Creator)

N l'un d'entre eux travaille:/

J'ai aussi essayé d'ajouter le fichier .lib dans un fichier QResource mais une syntaxe comme celui-ci:

LIBS += ":/lib/file.lib" 

dans un fichier .pro ne semble pas fonctionner .. .

Je suis maintenant à court d'idées :(

Aide s'il vous plaît :)

Répondre

1

Ok, j'ai trouvé la solution:

le répertoire lib/doit être placé dans le même répertoire que le Makefile (le vrai, pas le .pro).
Depuis que j'ai copié le répertoire lib/dans le répertoire build-desktop /, tout fonctionne correctement en utilisant des chemins relatifs :)

0

A partir de vos essais, je suppose que vous voulez créer un lien vers la bibliothèque en utilisant le chemin relatif qui devrait fonctionner très bien par def ault.

Essayez ceci:

LIBS += -L$$relative/directory/path -llibname 

Si cela ne fonctionne pas, alors vous pourriez vouloir essayer de régler plusieurs INCLUDEPATH. :/

+0

Alors, quel est le problème avec mon utilisation de LIBS + = -L -l? Comment dois-je utiliser $$ relatif? –

+0

Le tout est bizarre, car il devrait fonctionner même sans le $$, mais c'est l'essai imo. – Palmik

+0

INCLUDEPATH n'est pas utilisé pour les bibliothèques, seuls les fichiers inclus. –

1

Avez-vous essayé

LIBS += -Llib -lfile

ou

LIBS += -L./lib -lfile? N'oubliez pas que si vous n'utilisez pas le chemin d'accès complet, vous n'ajoutez pas .lib au nom de la bibliothèque et vous n'utilisez pas de guillemets. Si le chemin comporte des espaces (ou si vous voulez juste être sûrs), utilisez $$quote(-L<path name>)

Comme indiqué here, les chemins de style Unix fonctionnent également sous Windows, où vous devez normalement indiquer le chemin d'accès complet. qmake le remplira pour vous.

Je converti

LIBS += ../../lib/phraseBox.lib

à

LIBS += $$quote(-L../../lib) -lphraseBox

et

LIBS += $$quote(-L../../lib) phraseBox.lib

Dans un de mon projet sans problème sur W indows. Vous voudrez peut-être publier vos fichiers de projet quelque part, ou publier les messages d'erreur réels pour affiner cela.

+0

Toujours pas de résoudre mon problème. Je reçois toujours un "ne peut pas trouver fichier.lib". Voici la dernière ligne que j'ai essayée: LIBS + = -L $$ quote (./ lib) -l $$ quote (portaudio_x86). Sur le document que vous avez lié, il est écrit que nous pouvons ajouter l'extension .lib. De plus, on dit que les chiffres à la fin du nom de fichier peuvent causer des problèmes. J'ai essayé de les enlever mais c'est pareil. Merci de m'avoir aidé :) –

+0

Même si je l'écris avec un chemin absolu: LIBS + = -L $$ quote (C: \ My_Path \ My_Project \ lib) -l $$ quote (portaudio_x86) J'ai la même erreur:/Êtes-vous sûr que les options -L et -l sont disponibles sur Windows? –

+0

Mon erreur, il dit de faire $$ quote (-LC: \ My_Path \ My_Project \ lib). Je vais mettre à jour ma réponse avec un autre exemple, attendez. –

Questions connexes