21

저는 현재 여러 Linux 배포판에 다양한 C++ 응용 프로그램을 빌드 할 수있는 지속적인 통합 서버에 대한 적절한 설정을 연구 중입니다.C++ 용 연속 통합 서버 - 라이브러리 종속성은 어떻습니까?

내 기본 질문은 여기에 다른 사용자가 리눅스 배포판 간의 시스템 라이브러리의 차이점을 어떻게 처리 했는가하는 점입니다.

응용 프로그램과 함께 UI 라이브러리와 같은 직접 종속성을 구축하는 것이 상대적으로 쉽지만 매번 응용 프로그램과 함께 빌드해야하는 경우 glibc와 같은 간접적 인 종속성이 큰 고통처럼 보입니다. 따라서 실제 빌드 실행을 각 배포에 대해 별도의 가상 컴퓨터로 옮기는 것이 좋습니다. rlogin을 사용하여 명령을 실행합니다. 필자의 목표는 빌드 - 머신 라이브러리 버전과 대상 배포판에 배포 된 버전 간의 바이너리 비 호환성을 방지하는 것입니다.

누구나 그러한 프로세스에 대한 경험이 있으며 위의 내용이 실현 가능한 접근 방식이라고 생각할 수 있습니까?

+0

나는이 질문에 대한 좋은 대답을보고 싶다. 원래의 질문 외에도, 나는 리눅스에서 mingw을 위해 컴파일 할 수있는 방법을 알고 싶다. (필자는 Windows에서 mingw를 사용한다.) 또한, Qt 프레임 워크와 QTestLib을 사용하여 단위 테스트를 수행합니다. 감사! –

+0

나는 또한이 질문에 대한 좋은 대답을보고 싶다.IMHO, 이것은 각 모듈이 다른 모듈에 "결합"할 때 "구성 관리"문제로 간다. 그리고 lib를 연결함으로써 암시 적으로 업 스트림 라이브러리를 링크해야 함을 의미한다. lib-versioning-limitation이 필요하기 때문에이 문제는 빠르게 복잡해집니다 (예 : DLL-hell 또는 RPM-hell). 경계 간 호환 버전의 컨텍스트에서 간접적 종속 전파가 필수적입니다. – charley

답변

4

Buildbotbuildmasters and buildslaves이라는 개념을 가지고 있습니다.

buildmaster는 웹 GUI 표시, 이메일 전송, 빌드 트리거링 및 기타 관리를 담당합니다. buildslaves는 buildmaster에서 대기하고 명령을 받으면 빌드를 수행합니다.

우리는 다양한 플랫폼과 그 중 일부 VM을 기반으로 구축 된 buildbot을 보유하고 있으며 이는 우리를 위해 잘 작동합니다.

6

이 목적으로 Jenkins (인접 통합) 및 CMake (빌드 시스템)을 사용합니다. Jenkins는 Buildbot과 유사합니다. 즉, buildmaster 및 buildslaves도 있습니다. 현재 4 개의 다른 플랫폼 (FC8, FC10, FC12 및 Windows 7)을 구축하기 위해 8 개의 슬레이브를 설정했습니다. 우리는 디버그 및 릴리스 바이너리를 모두 빌드하므로 각 플랫폼 및 빌드 유형에 대해 하나의 슬레이브 만 사용했습니다.

Qt & Boost와 같은 제 3 자 라이브러리에 대해서는 각 플랫폼에서 컴파일 한 후 별도의 저장소로 확인했습니다.

@esavard : 우리는 CMake 2.8을 사용하여 교차 컴파일 작업을 수행했지만, 저는 minigw를 사용하지 않았지만 빠른 google 검색은 가능하다는 것을 나타냅니다. 여기에 a link은 CMake와 miniGW를 사용하여 Linux에서 Windows 용으로 교차 컴파일하는 튜토리얼입니다.

저는 Buildbot을 사용하지 않았으며 기능에 대해서는 언급 할 수 없지만 현재 사용하고있는 대안을 언급해야한다고 생각했습니다.

희망이 도움이됩니다.

+0

+1 CMake ... – Macke

+0

내가 CMake 대신 qmake를 사용하여 비슷한 것을 얻을 수 있다고 생각합니까? (지금 qmake를 사용하고 있으며 전에 Scons를 사용하고 있었습니까?) –

+0

qmake를 사용하지 않았으므로 어떻게 작동하는지 확실히 말할 수는 없습니다. [Here] (http://silmor.de/29)는 qmake를 사용하여 Linux에서 Windows 용 Qt 응용 프로그램을 크로스 컴파일하는 방법을 설명하는 링크입니다. Scons도 아주 좋은데, 나는 CMake를 선택하기 전에 그것을 시도했다. 여러 IDE를 지원하기 때문에 CMake와 함께갔습니다. Eclipse, Code :: Blocks, VS05, VS10 및 Emacs를 사용하는 사람들이 있습니다. 내가 만난 문제는 CMake를 사용하여 미리 컴파일 된 헤더를 지원하는 문제였습니다. – user258808

0

확실히 buildbot과 많은 가상 머신이 이와 함께 할 수있는 방법입니다. 우리는 밤새 우리 애플리케이션을 컴파일하는 많은 빌드 슬레이브를 호스팅하는 VMWare ESX 서버를 가지고 있습니다. 그런 다음 응용 프로그램을 다른 가상 시스템에서 테스트 (빌드 슬레이브가 아닌 기본 OS 설치 만)하여 작동하는지 확인하고 모든 종속성을 패키지화합니다.

내가하고 싶은 좋은 점은 테스트 실행 단계를 자동화 된 단계로 만드는 것입니다.하지만 아직 수행 할 시간이 주어지지 않았습니다.