在另一个文件夹中包含子项目.pri

时间:2013-01-30 14:11:20

标签: c++ makefile project qt-creator qmake

我有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文件的帮助下,是否有任何正确的方法来包含子项目的源(我需要这样做以进行调试)?

1 个答案:

答案 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文件的开头。

相关问题