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