Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt-can';在子项目中找不到文件_C++_Qt_Cppunit - Fatal编程技术网

C++ Qt-can';在子项目中找不到文件

C++ Qt-can';在子项目中找不到文件,c++,qt,cppunit,C++,Qt,Cppunit,所以,我想学习单元测试。因为CppUnit需要它自己的main函数来运行测试,所以我想我应该将我的测试套件转移到它自己的子项目中。如果整个哲学是错误的,请纠正我。然后我将把它推送到我的Git服务器,并尝试在Gerrit触发器上运行Jenkins中的测试。最终,我试图学习詹金斯,我正在创建一个简单的项目来帮助我实现这一目标。然而,在编译时,我遇到了许多与JenkinsTestSuite中的文件相关的问题,无法在JenkinsTestMain中找到文件。例如 persontest.cpp:5:20:

所以,我想学习单元测试。因为CppUnit需要它自己的
main
函数来运行测试,所以我想我应该将我的测试套件转移到它自己的子项目中。如果整个哲学是错误的,请纠正我。然后我将把它推送到我的Git服务器,并尝试在Gerrit触发器上运行Jenkins中的测试。最终,我试图学习詹金斯,我正在创建一个简单的项目来帮助我实现这一目标。然而,在编译时,我遇到了许多与
JenkinsTestSuite
中的文件相关的问题,无法在
JenkinsTestMain
中找到文件。例如

persontest.cpp:5:20: error: person.h: No such file or directory
In file included from persontest.cpp:7:
我的(基本)目录结构如下

詹金斯试验 |-詹金斯梅因 |-詹金斯套房酒店

我的JenkinsTest.pro文件如下所示:

TEMPLATE = subdirs

SUBDIRS += \
    JenkinsTestSuite \
    JenkinsTestMain

CONFIG += ordered
SUBDIRS += JenkinsTestMain
!include(../common.pri) {
    error(Couldn't find the common.pri file!)
}

QT       += core

QT       -= gui

TARGET = JenkinsTest
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp \
    person.cpp

HEADERS += \
        person.h
!include(../common.pri) {
    error(Couldn't find the common.pri file!)
}

QT       += core

QT       -= gui

TARGET = JenkinsTest
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp \
    persontest.cpp \

HEADERS += \
    persontest.h
INCLUDEPATH += . ..
WARNINGS += -Wall

TEMPLATE = lib

UI_DIR = .uics
MOC_DIR = .mocs
OBJECTS_DIR = .objs
我的JenkinsTestMain.pro文件如下所示:

TEMPLATE = subdirs

SUBDIRS += \
    JenkinsTestSuite \
    JenkinsTestMain

CONFIG += ordered
SUBDIRS += JenkinsTestMain
!include(../common.pri) {
    error(Couldn't find the common.pri file!)
}

QT       += core

QT       -= gui

TARGET = JenkinsTest
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp \
    person.cpp

HEADERS += \
        person.h
!include(../common.pri) {
    error(Couldn't find the common.pri file!)
}

QT       += core

QT       -= gui

TARGET = JenkinsTest
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp \
    persontest.cpp \

HEADERS += \
    persontest.h
INCLUDEPATH += . ..
WARNINGS += -Wall

TEMPLATE = lib

UI_DIR = .uics
MOC_DIR = .mocs
OBJECTS_DIR = .objs
我的JenkinsTestSuite.pro文件如下所示:

TEMPLATE = subdirs

SUBDIRS += \
    JenkinsTestSuite \
    JenkinsTestMain

CONFIG += ordered
SUBDIRS += JenkinsTestMain
!include(../common.pri) {
    error(Couldn't find the common.pri file!)
}

QT       += core

QT       -= gui

TARGET = JenkinsTest
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp \
    person.cpp

HEADERS += \
        person.h
!include(../common.pri) {
    error(Couldn't find the common.pri file!)
}

QT       += core

QT       -= gui

TARGET = JenkinsTest
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp \
    persontest.cpp \

HEADERS += \
    persontest.h
INCLUDEPATH += . ..
WARNINGS += -Wall

TEMPLATE = lib

UI_DIR = .uics
MOC_DIR = .mocs
OBJECTS_DIR = .objs
我的common.pri文件如下所示:

TEMPLATE = subdirs

SUBDIRS += \
    JenkinsTestSuite \
    JenkinsTestMain

CONFIG += ordered
SUBDIRS += JenkinsTestMain
!include(../common.pri) {
    error(Couldn't find the common.pri file!)
}

QT       += core

QT       -= gui

TARGET = JenkinsTest
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp \
    person.cpp

HEADERS += \
        person.h
!include(../common.pri) {
    error(Couldn't find the common.pri file!)
}

QT       += core

QT       -= gui

TARGET = JenkinsTest
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp \
    persontest.cpp \

HEADERS += \
    persontest.h
INCLUDEPATH += . ..
WARNINGS += -Wall

TEMPLATE = lib

UI_DIR = .uics
MOC_DIR = .mocs
OBJECTS_DIR = .objs

JenkinsTestMain/不在INCLUDEPATH中,因此找不到person.h

在JenkinsTestSuite.pro中,必须添加

INCLUDEPATH += ../JenkinsTestMain
或者,在测试中使用#include

我还建议为每个INCLUDEPATH+=添加DEPENDPATH+=,否则对person.h的更改将不会触发重新编译persontest.cpp,这将导致错误行为和崩溃


这里的另一个问题是person.cpp不是JenkinsTest的一部分。您必须在另一时间为JenkinsTest编译person.cpp,或者将该代码放入共享库。

JenkinsTestMain/不在INCLUDEPATH中,因此找不到person.h

在JenkinsTestSuite.pro中,必须添加

INCLUDEPATH += ../JenkinsTestMain
或者,在测试中使用#include

我还建议为每个INCLUDEPATH+=添加DEPENDPATH+=,否则对person.h的更改将不会触发重新编译persontest.cpp,这将导致错误行为和崩溃


这里的另一个问题是person.cpp不是JenkinsTest的一部分。您必须在另一次为JenkinsTest编译person.cpp,或者将该代码放入共享库。

OP可能不是这样,但我有相同的问题,原因不同

如果您的项目可以自行编译,但作为子项目生成时失败,则可能是由于另一个项目使用它,并且在include文件夹中缺少某些内容。例如:如果项目A使用项目B,而项目B依赖于文件X,则可能会出现错误,说明项目B找不到文件X,因为项目A在包含路径中没有该文件。(即使项目B包括它也很好)


在qmake中将依赖项添加到项目A的include路径为我解决了这个问题。

OP可能不是这样,但我由于不同的原因遇到了相同的问题

如果您的项目可以自行编译,但作为子项目生成时失败,则可能是由于另一个项目使用它,并且在include文件夹中缺少某些内容。例如:如果项目A使用项目B,而项目B依赖于文件X,则可能会出现错误,说明项目B找不到文件X,因为项目A在包含路径中没有该文件。(即使项目B包括它也很好)

在qmake中将依赖项添加到项目A的include路径修复了这个问题