我有qt项目proj1
,它取决于另一个(proj2
)。
目录树是这样的:
common/
`--/pr1/
proj1.pri
main.cpp
`--/pr2/
proj2.pri
src1.cpp
src2.cpp
proj1包括proj2:
include(../proj2.pri)
虽然在proj2.pri中列出的源是当前(pr2)目录:
SOURCES += src1.cpp \
src2.cpp
因此,当我尝试构建proj1
时,我收到了这样的错误:
make: *** No rule to make target `src1.cpp', needed by `src1.o'. Stop.
在pri文件的帮助下,是否有任何正确的方法来包含子项目的源(我需要这样做以进行调试)?
答案 0 :(得分:3)
在proj1.pri中,包括proj2.pri之前:
PROJECT_ONE_IS_DEFINED = 1
在proj2.pri中:
isEmpty(PROJECT_ONE_IS_DEFINED){
DEPENDPATH += pr2
INCLUDEPATH += pr2
} !isEmpty(PROJECT_ONE_IS_DEFINED){
DEPENDPATH += ..\pr2
INCLUDEPATH += ..\pr2
}
这样,如果项目2单独使用,它将被正常包含,如果用作项目1的一部分,它将被正确包含....
或者,你可以简单地将pr2的路径添加到project1中的DEPENDPATH,只要将你的cpp文件的路径添加到dependpath,make就可以了。
允许在许多项目中包含.pri文件而不用担心每种情况的特定路径的最有效方法是添加
DEPENDPATH += $$PWD
INCLUDEPATH += $$PWD
在每个.pri文件的开头。