문제

을 향상하기위한 것입 표준 non-standard C++라이브러리는 모든 C++사용자가 사용할 수 있습니다.그것은 합리적 가정의 가능한 오픈 소스 소 C++프로젝트 또는 그것은 큰 종속성을 너무 먼가?

도움이 되었습니까?

해결책

기본적으로 귀하의 질문으로 귀결"그는[무료 라이브러리 xyz]종속성으로 C++오픈 소스 프로젝트입니다."

이제 다음과 같은 견적서 이후 그리고 그 대답은 정말 생각할 필요도 없:

없이 좋은 라이브러리,가장 흥미로운 작업은 하드에서 할 C++;하지만 주어진 좋은 라이브러리,거의 모든 작업을 쉽게 할 수 있다

가정이 올바른(및 내 경험에 의하면,그것은)다음 쓰는 적당한 크기의 C++프로젝트 종속가 명백히 불합리하다.

개발 이 인수 또한, C++종속(외에 시스템 라이브러리)할 수 있는 합리적으로 예에서(개)클라이언트 시스템이 향상 라이브러리입니다.나 되지 않지만 불합리한 추정을 위한 소프트웨어를 확인합니다.

는 경우에는 소프트웨어 수도에 의존하는 부스트,그것은에 의존할 수 없 라이브러리입니다.

다른 팁

보세요 http://www.boost.org/doc/tools.html. 특히 BCP 프로젝트에 부스트 의존성을 포함시키려면 유틸리티가 유용합니다. 웹 사이트에서 발췌 :

"BCP 유틸리티는 부스트의 서브 세트를 추출하는 도구이며, 부스트와 별도로 라이브러리를 배포하려는 부스트 저자와 부스트의 하위 집합을 응용 프로그램과 함께 배포하려는 부스트 사용자에게 유용합니다.

BCP는 또한 코드 부스트의 일부 부분에 따라 의존하는 부분과 해당 종속성에서 사용되는 라이센스를보고 할 수 있습니다. "

물론 이것은 약간의 단점이있을 수 있지만 적어도 그렇게 할 가능성을 알고 있어야합니다.

나는 시스템에 의존성을 도입하는 데 매우 조심했지만 이제는 의존성이 큰 문제가 아니라는 것을 알았습니다. 최신 운영 체제에는 종종 종속성을 자동으로 해결하거나 적어도 관리자가 필요한 것을 쉽게 설치할 수있는 패키지 관리자가 제공됩니다. 예를 들어, 부스트는 Dev-Libs/Boost로 Gentoo-Postage에서 및 FreeBSD 포트에서 Devel/Boost로 사용할 수 있습니다.

최신 오픈 소스 소프트웨어는 다른 시스템을 많이 구축합니다. 안에 최근 연구, FreeBSD 패키지의 종속성을 추적함으로써 FreeBSD 4.11 시스템의 12,357 포트 패키지가 총 21,135 개의 라이브러리 종속성을 가지고 있음을 확인했습니다. 즉, 컴파일하기 위해 기본 시스템의 일부인 52 개의 라이브러리 이외의 라이브러리가 필요했습니다. 라이브러리 의존성은 688 개의 다른 라이브러리로 구성되었으며 단일 프로젝트에서 사용하는 다른 외부 라이브러리의 수는 1에서 38 사이에서 다양하며 모드 값은 2입니다. .

결국 귀하의 질문에 대한 답변은 비용 대 혜택 분석에서 비롯됩니다. 부스트와 같은 성숙하고 널리 사용되고 검토 및 테스트 된 라이브러리를 재사용 할 때 의존성이 낮고 부양 가족의 낮은 비용보다 큰 비용이 발생합니까? 부스트 시설의 사소한 사용을 위해서는 계속해서 Boost를 사용해야한다는 것입니다.

때에 따라 다르지. Boost에서 정의 된 클래스 템플릿 만 헤더 파일 만 사용하는 경우 - 예, 모든 코드가 외부 종속성없이 컴파일 시간에 생성되므로 부스트 공유 라이브러리를 흡수하지 않기 때문에 계속 사용하십시오. 버전화 문제는 공유 된 C ++ 라이브러리의 고통이며, 부스트는 이로 인해 면역이되지 않으므로 문제를 피할 수 있다면 모두 좋은 일입니다.

KDE는 또한 부스트에 따라 다릅니다.

그러나 대부분 프로젝트의 범위가 아닌 목표에 따라 목표에 달려 있습니다. 예를 들어 Tinyjson (매우 작은 프로젝트)은 거의 100% 부스트이지만, 제공하는 API는 부스트와 비슷하며 JSON 바인딩이 필요한 부스트 프로그래머를 대상으로하기 때문에 괜찮습니다. 그러나 다른 많은 JSON 라이브러리는 다른 청중을 대상으로하기 때문에 Boost를 사용하지 않습니다.

반면에 나는 직장에서 부스트를 사용할 수 없으며 다른 많은 개발자들 (그들의 날 직업에서)이 같은 보트에 있다는 것을 알고 있습니다. 따라서 목표가 OpenSource이고 부스트를 사용하는 그룹이 계속 진행되는지 말할 수 있다고 생각합니다. 엔터프라이즈를 대상으로하는 경우 프로젝트가 작동하기 위해 Boost (및 지원에 전념)에서 필요한 부품 만 생각하고 복사 할 수 있습니다.

  • 편집하다: 우리가 직장에서 사용할 수없는 이유는 소프트웨어가 약 7 개의 다른 플랫폼과 4 개의 컴파일러에 걸쳐 휴대 할 수 있어야하기 때문입니다. 따라서 우리는 모든 목표와 호환되는 것으로 입증되지 않았기 때문에 Boost를 사용할 수 없으므로 그 이유는 기술적입니다. (우리는 OpenSource와 Boost 라이센스 부품에 대해 괜찮습니다. 때때로 다른 것들에 부스트를 사용하므로)

C ++ 코드를 작성할 때 Boost를 사용하면 오픈 소스 코드를 배포 할 때의 추가 복잡성을 크게 능가합니다.

나는 일한다 프로그래머의 메모장 그리고 코드는 테스트, 스마트 포인터 및 파이썬 통합에 대한 부스트에 의존합니다. 요구 사항으로 인해 몇 가지 불만 사항이 있었지만 코드 작업을 원한다면 대부분은 그 일을 할 것입니다. 부스트 의존성을 취하는 것은 결코 후회하지 않은 결정이었습니다.

다른 사람들의 복잡성을 약간 덜 만들기 위해 Boost Python을위한 버전으로 사전 구축 된 라이브러리를 포함시켜 포함 된 디렉토리에 부스트를 제공하기 만하면됩니다.

예라고 말할 것입니다. 둘 다 맨드리바 (빨간 모자 기반) 및 Ubuntu (데비안 기반)에는 부스트 라이브러리를위한 패키지가 있습니다.

나는 강화하는 광범위한 기능을 제공한다고 생각하며, 당신이 말했듯이, 표준 비표준 C ++ 라이브러리는이를 종속성으로 정당화합니다.

불행히도 그렇습니다. 우분투의 경우 쉽게 구할 수 있지만 Rhel 4 & 5의 경우 거의 항상 Tarballs로 만들었습니다. 그들은 훌륭한 라이브러리입니다. 정말 큰 ... 때로는 당신이 정말로 필요한 모든 것이 엄지 손가락을 사용하는 것처럼 레일 스파이크를 사용하는 것과 같습니다.

그것은 모두 부스트를 사용하는 방식에 달려 있습니다. Diomidis가 말했듯이, 부스트에서 사소한 시설을 사용하려면 계속하십시오. 도서관을 사용하는 것은 범죄가 아닙니다.

물론, 새로운 의존성을 소개하는 것은 항상 약간의 단점과 추가 걱정이 있지만 오픈 소스 프로젝트에서는 부스트를 선호하지 않는 사람들이 많이 있습니다. 그들에 대한 당신의 기술을 향상시킵니다.

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