In CI we want to ensure that examples build cleanly, but we don't want to actually run them there. Meaning it's enough to just compile, but not link them in CI. Saving time up to 2-4x (MSVC), and disk space up to 1.2GB (or 8-70x). Add a new cmake target that compiles all examples without linking them into runnable binaries. Keep a full build for a single example to test if it links correctly. Also: - CI: switch over all `curl-examples` targets to `curl-examples-build` - GHA/linux-old: build examples in one of the cmake builds. Result highlights: Job | Bef. | Bef. | Aft. | Aft. | :------------------ | ---: | ----: | ---: |----: | cygwin | 15s | 9MB | 10s | 1MB | msys | 13s | 8MB | 7s | 1MB | dl-mingw 15 | 39s | 113M | 34s | 2MB | dl-mingw 9.5.0 | 49s | 115MB | 42s | 2MB | dl-mingw 7.3.0 | 19s | 113MB | 14s | 2MB | dl-mingw 6.4.0 | 9s | 12MB | 7s | 4MB | Linux cross | 19s | 28MB | 19s | 2MB | MSVC UWP | 65s | 374MB | 9s | 17MB | MSVC x64 | 22s | 846MB | 9s | 17MB | VS2010 | 48s | 105MB | 15s | 9MB | VS2022 clang-cl | 195s | 1.2GB | 51s | 20MB | iOS Xcode | 8s | | 5s | | macOS LibreSSL | 16s | | 11s | | Linux aws-lc | 3s | | 1s | | Follow-up to dda251ef1020da07dc4640a225e01051cb977535 #18232 Closes #18209
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-my 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-my 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.