C++ 在Qt中管理具有仅标题libs的项目
现在我有一个项目,它使用一个模板,因此只有头,库,并建立两个应用程序 我的文件夹组织如下:C++ 在Qt中管理具有仅标题libs的项目,c++,qt,qt-creator,qmake,C++,Qt,Qt Creator,Qmake,现在我有一个项目,它使用一个模板,因此只有头,库,并建立两个应用程序 我的文件夹组织如下: base/lib base/app1 base/app2 我现在要做的是,我有base/lib/lib.pri,它看起来像: HEADERS += ../lib/someHeader.h 我把它包括在base/app1/app1.pro和base/app2/app2.pro中 然而,在QtCreator中,它看起来有些丑陋,原因有二: .pri文件中的路径取决于包含路径的位置。例如,如果我有另一个应
base/lib
base/app1
base/app2
我现在要做的是,我有base/lib/lib.pri
,它看起来像:
HEADERS += ../lib/someHeader.h
我把它包括在base/app1/app1.pro
和base/app2/app2.pro
中
然而,在QtCreator中,它看起来有些丑陋,原因有二:
文件中的路径取决于包含路径的位置。例如,如果我有另一个应用程序,出于某种原因,我希望它位于文件夹.pri
中,它将无法工作anotherBase/app3/
- 在项目树上,它看起来像:
app1
-> app1.pro
-> headers
-> source files
app2
-> app2.pro
-> headers
-> source files
lib
-> lib.pri
-> headers
但是,在树状视图中,如果我将.pro
分配给lib
并将其作为自己的项目,那么当我想要编译所有内容时,它会抱怨没有可编译的lib,并出错
谢谢 在
.pri
文件中,您应该引用所有路径到$$PWD
。此变量包含当前解析文件的完整路径,即include文件
请注意,
PWD
与\u PRO\u FILE\u PWD\u
具有不同的含义,即使它们偶尔返回相同的值。看起来我已经找到了解决问题的方法。这有点像黑客,但效果很好。
您可以为Header only lib创建一个单独的.pro文件,并为其指定TEMPLATE=subdirs
,但不指定subdirs
变量。在此.pro文件中列出库的标题。它看起来像这样:
TEMPLATE = subdirs
HEADERS += h1.h \
h2.h
qmake现在明白了这个.pro文件不应该产生任何“目标”,但是qt creator将显示您在项目树中列出的所有标题,以便您可以将它们作为普通项目的标题进行编辑。库将只在适当的树级别进入项目树一次。您使用什么编译器?我尝试创建一个
TEMPLATE = subdirs
HEADERS += h1.h \
h2.h