libostd/README.md

50 lines
2.1 KiB
Markdown
Raw Normal View History

2017-04-06 20:14:52 +02:00
# libostd
2015-04-06 00:10:44 +02:00
2017-02-25 15:43:07 +01:00
**Work in progress, not ready for production use.**
2017-04-06 20:14:52 +02:00
Libostd is an extension of the C++17 standard library which mainly provides
2017-01-14 15:09:27 +01:00
ranges (to replace iterators) but also various other utilities like proper
streams, string formatting, coroutines, concurrency utilities and others. It's
meant to replace the more poorly designed parts of the C++ standard library to
2017-01-14 15:09:27 +01:00
make the language easier and more convenient to use.
2015-04-23 19:47:33 +02:00
2017-02-25 15:43:07 +01:00
It is not feature complete right now, as most things are still being worked on.
2017-04-06 20:14:52 +02:00
Documentation for libostd can be found at https://docs.octaforge.org/libostd.
Please refer to it for further information (the main page should be answer
some more of your questions). You can also read `doc/main_page.md` and other
files in there directly if you don't need the API documentation.
## Building
Libostd is built using the supplied C++ build tool. You need to compile the
2017-06-19 17:09:30 +02:00
build tool first using the compiler you will use to build the library itself.
2018-04-18 11:34:09 +02:00
On a typical Unix-like setup, this will involve:
2017-06-19 17:09:30 +02:00
~~~
c++ build.cc -o build -std=c++1z -I. -pthread
./build --help
~~~
2018-04-18 11:34:09 +02:00
This will typically build using either GCC or Clang with the default standard
library. **Keep in mind that it is you need at least Clang 4.0 or
GCC 7.1 to build.**
2017-06-19 17:09:30 +02:00
You can skip `-pthread` on Windows.
2017-06-18 16:25:00 +02:00
Using the tool should be straightforward. The `./build --help` command lists
the available options.
It also recognizes the environment variables `CXX` (the C++ compiler used
to build, defaults to `c++`), `AS` (the assembler used to build, defaults to
`c++` as well, as Clang and GCC can compile assembly files), `AR` (the tool
to create static lib archives, `ar` by default) and `STRIP` (the tool used
2017-05-01 17:49:27 +02:00
to strip the library in release mode, `strip` by default).
Additionally, the `CXXFLAGS`, `LDFLAGS` and `ASFLAGS` environment variables
are also used. The `CXXFLAGS` are passed when compiling C++ source files as
well as when linking (the compiler is used to link). The `LDFLAGS` are passed
additionally to `CXXFLAGS` only when linking. The `ASFLAGS` are passed to
2017-05-01 17:49:27 +02:00
the assembler (`CXXFLAGS` are not, even when Clang/GCC is used).