1

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

4

1 回答 1

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

于 2013-01-30T14:32:53.067 回答