KDevelop의 automake 기반 프로젝트에 사용자 정의 빌드 단계를 어떻게 추가합니까?

StackOverflow https://stackoverflow.com/questions/107160

  •  01-07-2019
  •  | 
  •  

문제

저는 최근 C++와 KDevelop을 사용하여 개인 코딩 프로젝트 작업을 시작했습니다.처음엔 그냥 해킹해서 시작했지만, 더 이상 진행하기 전에 적절한 단위 테스트 모음을 설정하면 장기적으로는 더 나을 것이라고 생각합니다.별도의 테스트 실행기 실행 파일을 하위 프로젝트로 만들었고 여기에 추가한 테스트가 제대로 작동하는 것으로 보입니다.지금까지는 성공했습니다.

그러나 나는 명시적으로 실행할 때뿐만 아니라 빌드할 때마다 단위 테스트를 실행하고 싶습니다.내가 만든 엉망진창을 편리한 라이브러리로 나누면 특히 그렇습니다. 각 라이브러리에는 자체 테스트 실행 파일이 있을 것입니다.모두 수동으로 실행하는 대신 빌드 프로세스의 마지막 단계로 실행하도록 하고 싶습니다.프로젝트 메뉴와 자동제작 관리자의 옵션을 모두 살펴봤지만 이를 설정하는 방법을 알 수 없습니다.

나는 이것이 makefile을 직접 편집함으로써 이루어질 수 있다고 상상한다.불행하게도 내 makefile-fu는 약간 약하고, 다음에 IDE를 통해 뭔가를 변경할 때 KDevelop가 내가 직접 변경한 내용을 덮어쓸 수도 있다는 걱정도 됩니다.따라서 KDevelop 자체를 통해 이 작업을 수행하는 방법에 대한 옵션이 있다면 그 방법을 선호합니다.

KDevelop이 빌드 프로세스의 일부로 테스트 실행 파일을 실행하도록 하는 방법을 아는 사람이 있습니까?감사합니다!

(저는 KDevelop과 100% 연관되어 있지 않습니다.KDevelop이 이 작업을 수행할 수 없거나 이 작업을 훨씬 쉽게 해주는 IDE가 있다면 전환할 것을 확신할 수 있습니다.)

도움이 되었습니까?

해결책

비록 당신은 ~할 수 있었다 테스트를 실행하려면 기본값 'make'target을 조작하면 모든 호출이 있기 때문에 일반적으로 권장되지 않습니다.

make

모든 테스트를 실행합니다.소프트웨어 패키지 중에 허용 된 준 표준 인 대신 "점검"대상을 사용해야합니다.그렇게함으로써 테스트는 실행할 때만 시작됩니다.

make check

그런 다음 "Make"대신 "Make Check"를 실행하도록 KDevelop을 쉽게 구성 할 수 있습니다.

Automake (Kdevelop을 통해)를 사용하고 있으므로 "확인"대상을 직접 작성할 필요가 없습니다.대신 `Makefile.am`을 편집하고 몇 가지 변수를 설정하세요.

TESTS = ...

다음을 살펴보시기 바랍니다.automake 문서, "테스트 스위트 지원"자세한 내용은

다른 팁

나는 이런 식으로 작동하게 만들었습니다.

$ cat src/base64.c
//code to be tested
int encode64(...) { ... }

#ifdef UNITTEST
#include <assert.h>
int main(int argc, char* argv[])
{
  assert( encode64(...) == 0 );
  return 0;
}
#endif //UNITTEST
/* end file.c */

$ cat src/Makefile.am
...
check_PROGRAMS = base64-test
base64_test_SOURCES = base64.c
base64_test_CPPFLAGS = -I../include -DUNITTEST
TESTS = base64-test

확인하다 src/base64-test를 빌드하고 실행합니다:

$ make check
...
PASS: base64-test
==================
All 1 tests passed
==================
...

이제 나는 이 모든 것을 다음과 같이 사용하기 위해 m4 매크로로 캡슐화하려고 합니다.

MAKE_UNITTEST(base64.c)

그러면 위의 솔루션과 같은 결과가 나올 것입니다.

도움이 되었기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top