문제

Boost Jam은 무엇이며 Jam으로 마이그레이션할 가치가 있나요?

Jam이 Perforce에 의해 구축된 빌드 시스템이라는 것을 이해하지만 Boost Jam과 일반 Jam이 어떻게 다른지 잘 모르겠습니다.

또한 SO 커뮤니티에 함께 작업한 사람이 있고 차이점 및/또는 이점을 강조할 수 있는 사람이 있기를 바랍니다.

도움이 되었습니까?

해결책

내 목적을 위해, 그것은 당신을 위해 부스트 라이브러리를 구축하는 것 일뿐입니다. 나는 당신이 그것으로 다른 일을 할 수 있다는 것을 알지 못했기 때문에 그것을 마이그레이션함으로써 당신이 의미 할 수있는 것을 이해하지 못합니다. 그리고 미안하지만 일반 잼이 무엇인지 알지 못합니다. 다른 사람은 답을 제공하지 않았기 때문에 나는 단지 그것을 이해할 것입니다.

Boost는 C ++의 클래스 및 기능 모음으로 다양한 작업에 유용합니다. 부스트의 클래스 및 기능은 라이브러리로 그룹화됩니다. 일부 라이브러리에는 #include preprocessor 문을 사용하여 간단히 사용할 수있는 헤더 파일에 일부 코드가 있으며, 다른 파일 (예 : 파일 시스템 또는 일반 표현식 라이브러리)은 .CPP 파일에서 구현의 일부가 있습니다.

이 .CPP 파일을 컴파일하는 데 시간이 걸릴 수 있으며 (컴파일하는 것에 따라 30 분이 걸릴 수 있음) 프로그램을 다시 컴파일하고 싶을 때마다 30 분이 걸리면 진짜 고통이 될 수 있습니다. 따라서 그들이 한 것은 .CPP 파일에 부분적으로 저장된 라이브러리에만 해당되며 .lib 파일로 사전 컴파일 할 수 있으며 이것이 Boost Jam의 목적입니다. 그것은 당신이 그들을 컴파일하는 데 30 분만 소비하면됩니다. 한 번, 그때부터 당신은 다시 30 분을 기다릴 필요가 없습니다.

그러나 상상할 수 있듯이 각 부스트 라이브러리는 많은 CPP 파일과 많은 헤더 파일로 구성되며 각각의 다양한 풍미 (디버그 버전, 릴리스 버전, 멀티 스레드 등)가 있으므로 간단한 프로세스가 아닙니다. 부스트 라이브러리를 직접 컴파일하기 만하면됩니다. 그곳에서 부스트 잼이 들어 오는 곳입니다. 라이브러리를 컴파일하라는 명령을 내린 다음 컴파일러에 모든 명령을 발행하고 결국에는 .lib 파일 모음이 있습니다. 각 라이브러리의 각각의 맛. 헤더 파일은 어떻게 든 lib 파일을 포함 할 링커를 알려 주므로 올바른 경로 설정이있는 경우, precompiled .lib 파일의 올바른 맛이 프로그램에 자동으로 연결되어 30 분 컴파일이 절약됩니다.

Boost JAM으로 라이브러리를 컴파일 해야하는 라이브러리 와이 페이지를 보면서 라이브러리가하지 않는 것을 볼 수 있습니다. http://www.boost.org/doc/libs/1_37_0 - 라이브러리에 lib 파일이 필요하지 않으면 (따라서 Boost Jam을 먼저 엉망으로 만들 필요가 없다면) "Build & Link : Header"라고 말하는 반면 라이브러리가 lib 파일을 사전 컴파일 해야하는 경우, It. "빌드 & 링크 : 자동 연결"이라고합니다.

또한 Windows에있는 경우 사전 컴파일 된 .lib 파일을 다운로드하여 Boost Jam을 사용할 필요가 없습니다. 그것을 얻으려면, 당신이해야 할 일은 www.boost.org 페이지로 이동하여 시작 섹션으로 이동하여 모든 것을 올바르게 설정하는지 확인하기 위해 끝까지 따라갑니다. 해당 페이지의 Windows 버전의 링크 중 하나는 사전 컴파일 된 .lib 파일을 찾을 위치를 나타냅니다.

다른 팁

크로스 플랫폼 C ++ 개발에 부스트 잼을 사용합니다. 나는 그것을 선택했다

  • 나는 내 코드가 Boost 빌드를 어디에서나 구축하기를 원합니다.
  • 비교적 간단한 선언 언어를 사용하여 대상을 구축하는 방법을 지정하고
  • 빌드 선언에서 절대 최소의 풍미 관련 예외를 갖춘 단일 호출로 바이너리의 다양한 풍미 (예 : 디버그 대 릴리스, 32 비트 vs. 64 비트, MSVC vs. GCC)를 구축 할 수 있습니다.

각 풍미 순열에 대해 별도의 규칙을 작성하는 대신 맛 특정 설정으로 일반 규칙을 개선 할 수 있습니다. 구문은 제가 선택한 것이 아니라 익숙해지기가 어렵지 않습니다.

이 백서는 부스트 잼과 CMAKE, SCONS 및 ECLIPSE CDT를 비교합니다. http://syrcose.ispras.ru/2009/files/04_paper.pdf

내 이해는 부스트 잼이 부스트 커뮤니티에 의해 유지되는 Perforce Jam의 파생물이며, Perforce Jam은 더 이상 적극적으로 유지되지 않습니다 ( 릴리즈 노트 2003 년 4 월에 마지막 업데이트를 받으십시오).

물론, 크로스 플랫폼 개발에 관심이 없다면 다른 사람들이 언급했듯이 더 쉬운 방법이 있습니다. 개인적으로 나는 Eclipse CDT를 다시 방문하는 것을 의미합니다. 5 년 전에 사용 가능한 것처럼 보이지는 않았지만 먼 길을 왔다고 들었습니다.

말씀하신 대로 Boost Jam은 빌드 시스템이며 다른 부스트 라이브러리와 독립적으로 사용할 수 있습니다.저는 Perforce Jam에 대해 아무것도 모르지만 제가 이해한 바에 따르면 Boost jam은 매우 유사하고 대부분 호환됩니다.

가장 큰 차이점은 Boost Jam이 종종 부스트 빌드, 일반적인 작업을 위해 설계된 잼 규칙 모음입니다.라이브러리 컴파일, 단위 테스트 실행, doxygen 문서 작성 등

다른 빌드 시스템과 비교하여 Boost Jam/Boost Build는 다양한 변형을 쉽게 컴파일할 수 있도록 설계되었습니다.따라서 디버그에서 릴리스로 또는 단일 스레드에서 다중 스레드로 컴파일 설정을 변경하려는 경우 많은 변경 사항이 자동으로 결정됩니다.

단점은 구문이 매우 까다롭고 부스트 웹 사이트 외부에는 좋은 문서가 없다는 것입니다.하지만 나는 Perforce Jam도 그런 점에서 나쁘다고 생각합니다.

빌드 도구의 선택을 감안할 때 잼으로 마이그레이션하지 않을 것입니다. C / C ++ 용 Cmake / Scons, QT 용 QMAKE, Java 용 Ant 및 MSBuild 등이있는 더 나은 빌드 시스템이 있습니다. 그들은 기술적으로 우수하지는 않지만 훨씬 더 많은 사람들이 그들에게 익숙하기 때문에 단순히 사용하는 것이 덜 고통 스러울 것입니다 (반면에, 그들은 기술적으로 우수 할 수 있습니다. D).

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