我在ubuntu 13.04上使用Qt Creator 2.7.0。
我刚刚遇到了使用库的想法,对我来说它们是一个全新的东西。
我刚想我需要在我的应用程序的.pro
文件中使用以下库来使用我自己的库:
LIBS += -L<lib's dir> -l<lib's name>
INCLUDEPATH += <headers' dir>
// for example:
LIBS += -L$$PWD/../MyLib/release/ -lMyLib
INCLUDEPATH += $$PWD/../MyLib/src/
如您所见,我将所有项目都放在名为Programming
的文件夹中(本例中为..
)
我的每个项目都在根目录中有.pro
和.pro.user
个文件,在子文件夹/src
中有源文件,在另一个子文件夹/release
中有发布。
所以,这就是我的Programming
文件夹:
Programming
MyLib
MyLib.pro
MyLib.pro.user
src
myclass.h
myclass.cpp
release
libMyLib.a
Makefile
myclass.o
MyApp
MyApp.pro
MyApp.pro.user
src
main.cpp
release
main.o
Makefile
MyApp
但是,我想我可以创建一个文件夹Programming/libs/
,并在libMyLib.a
文件夹中添加myclass.h
和libs
个文件。
我会为我的所有库做同样的事情,然后我总是可以像这样包含它们:
LIBS += -L$$PWD/../lib/ -lMyLib
INCLUDEPATH += $$PWD/../lib/
问题是,我会为我的计算机上存储的每个库获取包含路径,而libs
文件夹会变得一团糟,特别是如果在不同的库中有两个具有相同名称的标头。
我对使用库真的很陌生,是否有关于如何在计算机上找到它们的一般解决方案,以及如何将它们包含在您的项目中?
答案 0 :(得分:2)
你可以模仿像Boost这样的库,并且有一个像这样的目录树:
MyLib
build
Makefile, .pro or .sln file here
lib
MyLib
// your .so / .a here
include
MyLib
// your .h here
src
// your .cpp here
CMake or qmake file here
这样您就拥有了一个源外构建树(在build/
中),这样您的二进制文件就不会与您的源文件混淆。
lib/
和include/
目录很方便,因为您可以定义install
构建目标。如果您然后键入
make install
它会将所有内容复制到usr/local/lib
和user/local/include
,以便您的应用只需#include <MyLib/some_header.h>
即可直接链接到您的图书馆二进制文件(因为您已将所有内容复制到您的位置)系统范围的路径)。也没有名称冲突的危险,因为你将它包装在你自己的MyLib子目录中。