이 프로젝트는 나를 위해 무엇을하려고합니까?
C ++ (또는 C)에서 HTTPS 요청을하는 것이 간단하게 죽게합니다.
이 프로젝트를 사용하여 C ++ HTTPS 클라이언트 라이브러리를 얻는 이유는 무엇입니까?
C ++는 상자에서 네트워킹 지원이 누락되었습니다. 당신이 이것을 읽고 있다면, 우리는 당신이 우리와 같은 위치에 있다고 생각합니다. 우리는 우리 자신을 위해 그 구멍을 채워야했고 우리가 본 다른 옵션에 만족하지 못했습니다. 우리는이 코드를 작성했습니다. 우리가 본 다른 모든 바젤 규칙은 컬링 오류를 일으키는 텐서 플로우 파일의 잘못 구성인지 또는 바젤 설정 또는 크로스 컴파일을 제대로 처리하지 않는 Cmake 포장지의 잘못된 구성이든 심각한 문제가 발생하기 때문에이 코드를 작성했습니다. 여기서 목표는 쉽게 재사용 할 수있는 구성 요소를 만드는 것입니다.
기본 설정 시간 : 2m
어떻게, 바젤 사용자?. 즉시 HTTPS 요청을하도록하겠습니다.
여기에는 많은 텍스트가 있지만 우리는 철자를 철자하고 쉽게 만들려고 노력하고 있기 때문입니다. 문제가 있으면 알려주십시오. 우리는 당신의 도움을 더 좋고 더 완전하게 만드는 데 도움을주고 싶습니다. 그리고 우리는 당신을 돕고 싶습니다!
이 repo를 외부 WORKSPACE 으로 추가하여 아래 지침에 따라 최신 커밋으로 업데이트해야합니다.
load ( "@bazel_tools//tools/build_defs/repo:http.bzl" , "http_archive" )
# Hedron's Bazel Rules for C++ HTTPS Requests
# Makes @cpr, @curl, and @boringssl available for use
# https://github.com/hedronvision/bazel-make-cc-https-easy
# This also brings in @hedron_std_filesystem_backport to enable CPR across-platforms.
# Lets you use the std::filesystem API on Apple platforms, where it wouldn't otherwise be available. # (Deployment targets before macOS 10.15, iOS/tvOS 13.0, and watchOS 6.0)
# Just use fs:: as a drop-in replacement for std::filesystem.
# For more, see: https://github.com/hedronvision/bazel-cc-filesystem-backport
http_archive (
name = "hedron_make_cc_https_easy" ,
# Replace the commit hash in both places (below) with the latest, rather than using the stale one here.
# Even better, set up Renovate and let it do the work for you (see "Suggestion: Updates" in the README).
url = "https://github.com/hedronvision/bazel-make-cc-https-easy/archive/315416306204ce6bb2983b4a923815a7e89eb727.tar.gz" ,
strip_prefix = "bazel-make-cc-https-easy-315416306204ce6bb2983b4a923815a7e89eb727" ,
# When you first run this tool, it'll recommend a sha256 hash to put here with a message like: "DEBUG: Rule 'hedron_make_cc_https_easy' indicated that a canonical reproducible form can be obtained by modifying arguments sha256 = ..."
)
load ( "@hedron_make_cc_https_easy//:workspace_setup.bzl" , "hedron_make_cc_https_easy" )
hedron_make_cc_https_easy ()
load ( "@hedron_make_cc_https_easy//:transitive_workspace_setup.bzl" , "hedron_keep_cc_https_easy" )
hedron_keep_cc_https_easy ()Bazel의 모든 플랫폼 종속 C/C ++와 마찬가지로 플랫폼 별 구성을 위해 Bazel 7+ (및 유사하게 최근 버전의 Rules_Apple)를 사용하여 자동으로 작동해야합니다. (Bazel 7이 표준이 될 정도로 오래된 경우이 섹션을 삭제하려면 PR을 제출하십시오.)
코드에서 사용할 수 있도록 Libcurl 개발 헤더가 설치되어 있는지 확인해야합니다.
sudo apt-get install libcurl4-openssl-dev (debian/ubuntu) 또는 분포에 해당하는 것을 실행하십시오. 다른 배포판에 대한 설치 지침은 여기를 참조하십시오. https://everything.curl.dev/get/linux. 코드를 기반으로 바이너리 패키지를 배포하는 경우 libcurl4에 대한 종속성을 선언하거나 다른 방법으로 sudo apt-get libcurl4 Sudo에게 알려야합니다. 그리고 항상 그렇듯이 미래의 사용자에게 도움이되는 것을 배우면 PR 또는 문제를 제기하십시오.
배경으로, 우리는 OS가 안정적으로 제공 할 수있는 라이브러리와 동적으로 연결되는 접근 방식을 취하고 그렇지 않으면 번들링 (빌딩 + 정적으로 연결). Linux는 의존성 관리 시스템이 내장되어 있기 때문에 특별한 경우이므로 OS와 함께 배송되는 것보다 더 많은 라이브러리를 안정적으로 제공 할 수 있습니다.
외로 : 바젤이 Linux 패키지 관리자를 더 잘 지원할 수있는 바젤 확장에 대한 기회가 있다는 사실에 놀랐습니다. 관심이 있거나 해킹을 돕는 경우이 제안을 참조하십시오. Google이 직접 구현하는 데 관심이 있는지 여부에 대한 논의를 계속합시다.
deps 에 "@cpr" 추가하고 멋진 LIBCPR 인터페이스를 사용하십시오!
자세한 내용은 문서를 참조하십시오. 그러나 인터페이스는 정말 유쾌하게 인체 공학적입니다. 예를 들어 :
# include < cpr/cpr.h >
cpr::Response r = cpr::Get(cpr::Url{ " https://github.com " },
cpr::Parameters{{ " key " , " value " }});우리가 CPR을 선택하고 추천하는 이유에 대한 자세한 내용은 whycpr.md를 참조하십시오.
아직 C ++ 17 이상을 활성화해야합니다. 우리는 .bazelrc에 다음을 넣음으로써 이것을 만족시킵니다.
build --cxxopt=-std=gnu++20
build --per_file_copt=.*.mm$@-std=gnu++20
deps 에 "@curl" 추가하고 평소의 영광 (예 : 문서)에서 libcurl을 사용하십시오.
... 또는 C ++에서 C 인터페이스를 구현하고 ( extern "C" 사용) Libcpr을 사용하십시오.
그러나 우리는 제안이 있습니다 ...
보안 패치를 포함한 기본 라이브러리로 향상되기 때문에 최신 정보를 유지하는 것이 좋습니다.
기본적으로 이러한 종속성 (및 기타)을 최신 상태로 유지하기 위해 어느 시점에서 리노베이트 (또는 이와 유사한)를 설정하는 것이 좋습니다. [우리는 Renovate 나 다른 것과 관련이 없지만 굉장하다고 생각합니다. 새로운 버전을보고 검토 또는 자동 테스트를 위해 PRS를 보냅니다. 무료이며 설정하기 쉽습니다. 코드베이스에서 놀랍도록 유용했으며, 우리는 훌륭한 관리자와 협력하여 바젤 사용에 큰 도움이되었습니다. 그리고 그것은 공식 바젤 저장소에 사용됩니다.
지금은 그렇지 않다면이 단계로 돌아와서이 레포지어를보고 업데이트를보십시오. [또는 이봐, 아마도 우리에게 빠른 스타를주십시오. 메인 지점에 대한 최신 커밋은 원하는 커밋입니다. 따라서 릴리스 알림에 의존하지 마십시오. 새로운 커밋을 위해 수동으로 리노베이트 또는 설문 조사를 사용하십시오.
설정을 통해이를 만드는 방법. C ++에서 웹의 전력을 쉽게 사용할 수 있다는 것을 응원합니다!
이것은 MacOS, Linux, Android, iOS, WatchOS 및 TVOS에서 완벽하게 작동해야합니다.
Windows에 원한다면 도움이 필요합니다. 처음부터 스스로하는 것보다 지원을 추가하는 것이 훨씬 쉽습니다. 우리는 안내를 도와 드리겠습니다. 그러면 코드는 플랫폼에서 무료로 작동합니다. 또한, 당신은 모두를 도울 것입니다. 사람들이 노력을 중복시키지 않도록하기 위해 시작할 때 문제에 연락하십시오.
C 또는 C ++에 Bazel을 사용하는 경우 다른 툴링도 필요할 것입니다.