curl/docs/examples
Viktor Szakats 45202cbba4
cmake: separate target for examples, optimize CI, fix fallouts
- Move `docs/examples` builds under a separate target.

- Make `BUILD_EXAMPLES` default to `ON`. It means to generate the rules
  for `docs/examples` by default, but not build them. To build them,
  an explicit `make curl-examples` (or ninja, etc) command is necessary.
  This syncs behaviour with autotools, and also how both cmake and
  autotools are building tests.

- GHA: update cmake jobs to use the new way of building examples.

- GHA: move examples build step at the end of the job, after building
  and running tests. This allows to have build and test run results
  faster, and leave the seldom-changing examples build to the end.
  Building examples is the slowest build step with no practical way to
  make them fast.

- appveyor: enable building examples in two old-MSVC jobs.

- examples: fix examples to build cleanly with old MSVC versions.

- GHA/non-native: move example build log under a GHA foldable section.

- GHA/windows: move building examples into separate step for Linux cross
  jobs.

Follow-up to dfdd978f7c #13491
Closes #14906
2024-09-20 23:53:33 +02:00
..
.checksrc
.gitignore examples: add missing binaries to .gitignore 2024-06-14 13:25:55 +02:00
10-at-a-time.c
adddocsref.pl
address-scope.c
altsvc.c
anyauthput.c tidy-up: OS names 2024-08-04 19:17:45 +02:00
cacertinmem.c
certinfo.c
chkspeed.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
CMakeLists.txt cmake: separate target for examples, optimize CI, fix fallouts 2024-09-20 23:53:33 +02:00
connect-to.c
cookie_interface.c cmake: separate target for examples, optimize CI, fix fallouts 2024-09-20 23:53:33 +02:00
crawler.c
debug.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
default-scheme.c
ephiperfifo.c tidy-up: OS names 2024-08-04 19:17:45 +02:00
evhiperfifo.c
externalsocket.c
fileupload.c
ftp-wildcard.c
ftpget.c
ftpgetinfo.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
ftpgetresp.c tidy-up: OS names 2024-08-04 19:17:45 +02:00
ftpsget.c
ftpupload.c tidy-up: OS names 2024-08-04 19:17:45 +02:00
ftpuploadfrommem.c tidy-up: OS names 2024-08-04 19:17:45 +02:00
ftpuploadresume.c
getinfo.c
getinmemory.c
getredirect.c
getreferrer.c
ghiper.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
headerapi.c
hiperfifo.c
href_extractor.c
hsts-preload.c
htmltidy.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
htmltitle.cpp
http2-download.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
http2-pushinmemory.c
http2-serverpush.c cmake: separate target for examples, optimize CI, fix fallouts 2024-09-20 23:53:33 +02:00
http2-upload.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
http3-present.c
http3.c
http-options.c
http-post.c tidy-up: OS names 2024-08-04 19:17:45 +02:00
httpcustomheader.c
httpput-postfields.c tidy-up: OS names 2024-08-04 19:17:45 +02:00
httpput.c tidy-up: OS names 2024-08-04 19:17:45 +02:00
https.c
imap-append.c
imap-authzid.c
imap-copy.c
imap-create.c
imap-delete.c
imap-examine.c
imap-fetch.c
imap-list.c
imap-lsub.c
imap-multi.c
imap-noop.c
imap-search.c
imap-ssl.c
imap-store.c
imap-tls.c
interface.c
ipv6.c
keepalive.c
localport.c
Makefile.am printf: fix mingw-w64 format checks 2024-09-02 21:03:01 +02:00
Makefile.example tidy-up: adjust casing of project names 2024-07-12 13:56:16 +02:00
Makefile.inc
Makefile.mk
maxconnects.c
multi-app.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
multi-debugcallback.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
multi-double.c
multi-event.c
multi-formadd.c examples: suppress deprecation warnings locally 2024-07-08 17:22:21 +02:00
multi-legacy.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
multi-post.c
multi-single.c
multi-uv.c example/multi-uv: remove the use of globals 2024-07-27 23:09:44 +02:00
multithread.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
netrc.c
parseurl.c
persistent.c
pop3-authzid.c
pop3-dele.c
pop3-list.c
pop3-multi.c
pop3-noop.c
pop3-retr.c
pop3-ssl.c
pop3-stat.c
pop3-tls.c
pop3-top.c
pop3-uidl.c
post-callback.c tidy-up: OS names 2024-08-04 19:17:45 +02:00
postinmemory.c
postit2-formadd.c examples: suppress deprecation warnings locally 2024-07-08 17:22:21 +02:00
postit2.c
progressfunc.c
protofeats.c
range.c
README.md
resolve.c
rtsp-options.c
sendrecv.c cmake: separate target for examples, optimize CI, fix fallouts 2024-09-20 23:53:33 +02:00
sepheaders.c
sessioninfo.c
sftpget.c
sftpuploadresume.c
shared-connection-cache.c
simple.c
simplepost.c
simplessl.c cmake: separate target for examples, optimize CI, fix fallouts 2024-09-20 23:53:33 +02:00
smooth-gtk-thread.c
smtp-authzid.c
smtp-expn.c
smtp-mail.c
smtp-mime.c
smtp-multi.c
smtp-ssl.c
smtp-tls.c
smtp-vrfy.c
sslbackend.c
synctime.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
threaded-ssl.c lib/src: white space edits to comply better with code style 2024-09-19 14:59:12 +02:00
unixsocket.c tidy-up: OS names 2024-08-04 19:17:45 +02:00
url2file.c
urlapi.c
usercertinmem.c tidy-up: adjust casing of project names 2024-07-12 13:56:16 +02:00
version-check.pl
websocket-cb.c
websocket.c
xmlstream.c

libcurl examples

This directory is for libcurl programming examples. They are meant to show some simple steps on how you can build your own application to take full advantage of libcurl.

If you end up with other small but still useful example sources, please mail them for submission in future packages and on the website.

Building

The Makefile.example is an example Makefile that could be used to build these examples. Just edit the file according to your system and requirements first.

Most examples should build fine using a command line like this:

`curl-config --cc --cflags --libs` -o example example.c

Some compilers do not like having the arguments in this order but instead want you do reorganize them like:

`curl-config --cc` -o example example.c `curl-config --cflags --libs`

Please do not use the curl.se site as a test target for your libcurl applications/experiments. Even if some of the examples use that site as a URL at some places, it does not mean that the URLs work or that we expect you to actually torture our website with your tests. Thanks.

Examples

Each example source code file is designed to be and work stand-alone and rather self-explanatory. The examples may at times lack the level of error checks you need in a real world, but that is then only for the sake of readability: to make the code smaller and easier to follow.