我正在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
文件夹会变得一团糟,尤其是如果在不同的库中有两个具有相同名称的 header 时。我真的是使用库的新手,是否有一个通用的解决方案来确定如何将它们放置在您的计算机上以及如何将它们包含到您的项目中?
最佳答案
您可以模仿诸如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子目录中。关于c++ - 如何维护自制库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16985800/