RE2에는 C++11이 필요합니다.
묘사
/re2@cd505f4597d4022902b25bd036de29478e22d481토론 #1
은 이에 대해 감사를 표합니다(그리고 Hound의 시끄러운 자동 응답에 대해 사과를 드립니다. 이것은 설정을 조정해야 할 것 같습니다).화가 나는 것은 C++11 지원이 부족하기 때문에, 내 노화된 컴퓨터 (Mac OS X 10.7) 에서 이 점을 테스트할 수 없다는 것이다.하지만 며칠 후에 다른 곳에서 테스트를 할 수 있습니다.
official installation instructions을 살펴보면
extconf.rb
(가능한 atomic
)을 통해 have_library
을 단순화할 수 있습니까?또한 Travis CI 구성에 변경 사항(특히 1.8.7 지원은 포기)이 필요합니까?
토론 #2
Hound 는 몇 가지 일에서도 옳습니다.나는 루비를 좋아하는 사람이 아니기 때문에 루비의 스타일을 좋아하지 않는다:)as it lacks C++11 support
네, 이것은 좀 불리합니다.많은 시스템들이 C++11을 지원하지 않기 때문에 그것을 필요로 하는 것은 매우 고통스럽다.그래서 낡은 리2와 새로운 리2를 지원하는 방법을 찾는 것이 현명할 수 있을까?
could we simplify the extconf.rb by specifically checking for atomic (perhaps with have_library)?
따라서
atomic
은 C++stdlib의 한 머리다.나는 have_library
이 그렇게 큰 도움이 될 것이라고 생각하지 않는다.Also, are the Travis CI configuration changes still required
그럼, 트라비스의 첫 실패를 보자.Ubuntu 12.04의 C++11 지원 부족으로 인해 모든 것이 붕괴되었습니다https://travis-ci.org/mudge/re2/builds/121797286
(particularly dropping 1.8.7 support)?
나는 그것을 일하게 할 수 없다.https://travis-ci.org/stefanor/ruby-re2/builds/121813125
이 모든 것은 RE2 라이브러리에 C++11이 필요한지 확인할 수 있을 거라고 생각했습니다.적절하게 편역을 진행하다.
그리고 travis의 변경 사항을 복구할 수 있습니다. (오래된 RE2 라이브러리를 테스트하고 있습니다. C++11이 필요하지 않습니다.)그것들을 보존하거나 현대의 RE2로 새로운 차원을 늘릴 수도 있다.
내가 풀어볼게.
토론 #셋
됐습니다.나는 이것이 훨씬 간단하다고 생각한다.이전 Travis 구성에도 적용:https://travis-ci.org/stefanor/ruby-re2/builds/123618713고마워, 스토퍼노.
로컬에서 테스트하고 싶었을 뿐입니다. 그러나 최신 안정적인 버전re2(2016-04-01)는 이 지점과 연결할 때 C++11이 필요하지 않을 것 같습니다.
> rake
mkdir -p tmp/x86_64-darwin14/re2/2.3.0
cd tmp/x86_64-darwin14/re2/2.3.0
/Users/mudge/.rubies/ruby-2.3.0/bin/ruby -I. ../../../../ext/re2/extconf.rb
checking for main() in -lstdc++... yes
checking for stdint.h... yes
checking for rb_str_sublen()... yes
checking for RE2... yes
checking for RE2 requires C++11... no
checking for RE2::Match() with endpos argument... yes
creating Makefile
업데이트되고 발표되지 않은 버전으로 연결해야 합니까?토론 #4
은re2의 새로운 버전입니다. C++11 종류를 공개하거나, C++11이 필요하지 않아도 연결할 수 있습니까? (C.f. "Can a compiled C++11 library (lib,dll,etc.) be linked in older C++ compilers?")토론 #5
Is the new version of re2 exposing any C++11 types
이것은
토론 #6
에서std::atomic
(간접)을 사용하기 때문에 이 헤드를 사용하려면 C++11을 사용해야 한다.re2.h
the latest stable version of re2 (2016-04-01), seems not to require C++11
이 판본은 반드시 그것을 필요로 할 것이다.나에게
mkdir -p tmp/x86_64-linux-gnu/re2/2.3.0
cd tmp/x86_64-linux-gnu/re2/2.3.0
/usr/bin/ruby2.3 -I. ../../../../ext/re2/extconf.rb
checking for main() in -lstdc++... yes
checking for stdint.h... yes
checking for rb_str_sublen()... yes
checking for RE2... yes
checking for RE2 requires C++11... yes
checking for RE2::Match() with endpos argument... yes
creating Makefile
너는 토론 #7
을 잊었니?rake clean
에서 이 점을 회복하기 위해 나는 마침내 구축 실패를 재현하고 Ruby 2.3.1을 사용하여 라이브러리를 깨끗하게 컴파일할 수 있었다.일을 복잡하게 하는 것은 루비 2.3.0이
토론 #8
에서memset_s
을 사용했을 때 오류가 발생했습니다. 이것은 번역을 파괴했습니다. (지금은 fixed). 그래서 이 버전에 해결 방법이 있는지 보겠습니다. include/ruby/missing.h
은 당신의 공헌에 매우 감사드리며, 발표 시기에 너무 긴 사과의 뜻을 표하지만, 지금은 version 1.0.0에서 복원되었습니다.
Reference
이 문제에 관하여(RE2에는 C++11이 필요합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/mudge/re2/issues/30텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)