2012-09-22 2 views
2

그래서 CppUnit 테스트를 배우려고합니다. CppUnit은 자신의 main 테스트를 실행하는 기능이 필요하기 때문에 테스트 스위트를 자신의 하위 프로젝트로 옮길 것이라고 생각했습니다. 그 철학 ​​전체가 잘못 되었다면, 저를 시정하십시오. 그런 다음 이것을 Git 서버로 밀어 넣고 Jerkins에서 Gerrit 트리거를 사용하여 테스트를 실행 해 봅니다. 궁극적으로 저는 젠킨스를 배우려고 노력하고 있습니다. 그리고 저를 돕기 위해 간단한 프로젝트를 만들고 있습니다. 그러나 컴파일 할 때 JenkinsTestMain에있는 파일을 찾을 수 없으면 JenkinsTestSuite에있는 파일과 관련된 많은 문제가 발생합니다. -JenkinsTestMain | | 예를 들어 ...Qt가 하위 프로젝트의 파일을 찾을 수 없습니다.

persontest.cpp:5:20: error: person.h: No such file or directory 
In file included from persontest.cpp:7: 

내 (기본) 디렉토리 구조는 ... 같은 JenkinsTest

입니다 -JenkinsTestSuite

내 JenkinsTest.pro 파일과 같은 :

TEMPLATE = subdirs 

SUBDIRS += \ 
    JenkinsTestSuite \ 
    JenkinsTestMain 

CONFIG += ordered 
SUBDIRS += JenkinsTestMain 

내 JenkinsTestMain.pro 파일과 같이 보인다 :

,
!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 
처럼

내 JenkinsTestSuite.pro 파일은 같습니다

INCLUDEPATH += . .. 
WARNINGS += -Wall 

TEMPLATE = lib 

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

답변

0

JenkinsTestMain /을 INCLUDEPATH에 따라서 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 

내 common.pri 파일이 보인다 .

JenkinsTestSuite.pro에서는 테스트에서, 또는 사용의 #include

INCLUDEPATH += ../JenkinsTestMain 

를 추가해야합니다.

각 INCLUDEPATH + =에 대해 DEPENDPATH + =를 추가하는 것이 좋습니다. 그렇지 않으면 person.h를 변경해도 persontest.cpp가 다시 컴파일되도록 트리거하지 않으므로 잘못된 동작 및 충돌이 발생합니다.

또 다른 문제는 person.cpp가 JenkinsTest의 일부가 아니라는 것입니다. person.cpp를 JenkinsTest 용으로 다시 컴파일하거나 해당 코드를 공유 라이브러리에 저장해야합니다.

0

이것은 OP에게는 해당하지 않을 가능성이 있지만 다른 이유로 인해 동일한 문제가 발생했습니다.

프로젝트를 자체적으로 정상적으로 컴파일했지만 하위 프로젝트로 빌드하면 실패하는 프로젝트는 다른 프로젝트에서 프로젝트를 사용하고 포함 폴더에 내용이 누락되었을 수 있습니다. 예 : 프로젝트 A가 프로젝트 B를 사용하고 프로젝트 B가 파일 X에 종속되어있는 경우 프로젝트 A가 포함 경로에 포함되어 있지 않기 때문에 프로젝트 B가 파일 X를 찾을 수 없다는 오류가 발생할 수 있습니다. (비록 프로젝트 B가 잘 포함되어 있지만)

qmake의 프로젝트 A의 포함 경로에 종속성을 추가하면 문제가 해결되었습니다.

관련 문제