빌더(TWx) 님이 쓰신 글 :
: 뽀뽀중 님이 쓰신 글 :
: : 안녕 하세요
: :
: : Boost Python을 사용을 고려 중입니다.
: : Python은 2.x 와 3.x 버전이 호환성이 많이 떨어진다고 하여 3.x 버전을 사용할 생각 입니다
: :
: : 그런데, Rad Studio 최신버전에서 지원하는 Boost는 32-bit Windows BCC32 1.39.0버전, BCC32C 1.55.0버전 인데,,
: : Boost 1.55에서는 Python 2.0을 지원하는 것 같습니다,
: :
: : 인터넷으로 Boost 최신버전을 Rad Studio에서 사용하는 방법을 찾아보고 있는데, 참고할 자료가 거의 없습니다.
: :
: : 불가능 한 것인가요?
: :
:
:
: 답변:
:
:
: Boost Python 최신 버전을 Rad Studio 에서 사용할 수 있도록 누군가에게 포팅을 의뢰한다고 해봅시다.
:
: Boost는 C++ Template 테크닉을 이용해서 구현되기 때문에 포팅이 가능하려면 우선 C++ Template을
: 완벽하게 다룰 수 있는 사람이어야 합니다.
:
: Boost 라이브러리가 아래와 같이 C++17 랭귀지 파워를 이용해서 작성되어 있다면
:
: void fun(std::string_view id, std::unique_ptr<Foo> foo)
: {
: if (auto [pos, inserted] = items.try_emplace(id, std::move(foo)); inserted)
: pos->second->launch();
: else
: standby.emplace_back(std::move(foo))->wait_for_notification();
: }
:
: C++17 Template 테크닉을 모르고 있으면 소스코드 해석 마저도 못할테니까
: C++11만 지원하는 컴파일러에 맞게 포팅하는 것 자체가 불가능 할 것이기 때문이죠.
:
:
: 그리고...
:
: Boost Python은 Jam 빌드시스템에 의해서 빌드되게 되어있고, Bootstrap 과정에서 Jam 빌드 시스템 자체를
: 컴파일 해서 사용하는 환경이기 때문에 Rad Studio 컴파일러를 지원하도록 하기 위해선 Jam 빌드 시스템도
: 수정해야 합니다.
:
: 이뿐이 아니고...
:
: Rad Studio 에서는 bcc32, bcc32c, bcc64의 3개의 C++ 컴파일러가 존재하는데...
: 각각의 컴파일러를 지원하도록 하려면 Boost 전체 템플릿 코드를 확인해서 각기의 컴파일러의 C++11, C++14, C++17
: 지원 여부에 맞게 템플릿 코드를 조건부로 컴파일 할 수 있도록 Boost 라이브러리 전체를 확인해서 수정 해줘야 합니다.
:
: 이건 완전 노가다죠. 엠바에선 C++ Template 다룰주 아는 직원들 동원해서 작업을 나눠서 하면 되겠지만 혼자서 작업하기엔
: 작업이 너무 커지고. 저 같은 경우라도 누군가 포팅 비용으로 3천에 해달라고 의뢰한다고 하면 작업에 착수하겠지만
: 그리 즐거운 일이 되지는 않을 겁니다.
:
: 오픈소스 생태계에서 엠바 컴파일러는 메인스트림 컴파일러로 취급 자체를 안할 정도로 별볼일 없는 컴파일러에
: 불과한 게 현실이고, 파이썬에서 C++ 모듈을 사용하는 게 목적이라면 그냥 VC++ 컴파일러 이용하세요.
:
:
:
BCC32는 Boost 1.39.0버전, BCC32C는 Boost 1.55.0버전 인것을 보면, 컴파일러 종류에 따라 작업을 따로 한것 같습니다.
다음 버전에서는 Boost 가 최신것이 포팅 되어 포함되었으면 좋겠네요.
엠바 컴파일러가 마이너 컴파일러라서, 많은 최신의 유용하거나 최신기술을 사용할수 없다는 것은 큰 문제인것 같습니다,
마지막 문장이 엠바 컴파일러의 현실인듯 합니다.
최신의 좋은 라이브러리를 사용할수 없다는 점 때문에 VC++ 을 사용해야 할것 같습니다.
답변 감사 합니다.
|