diff options
Diffstat (limited to 'src/arrow/cpp/examples/minimal_build/README.md')
-rw-r--r-- | src/arrow/cpp/examples/minimal_build/README.md | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/arrow/cpp/examples/minimal_build/README.md b/src/arrow/cpp/examples/minimal_build/README.md new file mode 100644 index 000000000..9f889f6ad --- /dev/null +++ b/src/arrow/cpp/examples/minimal_build/README.md @@ -0,0 +1,88 @@ +<!--- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> + +# Minimal C++ build example + +This directory showcases a minimal build of Arrow C++ (in `build_arrow.sh`). +This minimal build is then used by an example third-party C++ project +using CMake logic to compile and link against the Arrow C++ library +(in `build_example.sh` and `CMakeLists.txt`). + +When run, the example executable reads a file named `test.csv`, +displays its parsed contents, and then saves them in Arrow IPC format in +a file named `test.arrow`. + +## Running the example + +You can run this simple example using [Docker Compose][docker-compose] +and the given `docker-compose.yml` and dockerfiles, which installs a +minimal Ubuntu image with a basic C++ toolchain. + +Just open a terminal in this directory and run the following commands: + +```bash +docker-compose run --rm minimal +``` + +Note that this example mounts two volumes inside the Docker image: +* `/arrow` points to the Arrow source tree +* `/io` points to this example directory + +## Statically-linked builds + +We've provided an example build configuration here with CMake to show how to +create a statically-linked executable with bundled dependencies. + +To run it on Linux, you can use the above Docker image: + +```bash +docker-compose run --rm static +``` + +On macOS, you can use the `run_static.sh` but you must set some environment +variables to point the script to your Arrow checkout, for example: + +```bash +export ARROW_DIR=path/to/arrow-clone +export EXAMPLE_DIR=$ARROW_DIR/cpp/examples/minimal_build +export ARROW_BUILD_DIR=$(pwd)/arrow-build +export EXAMPLE_BUILD_DIR=$(pwd)/example + +./run_static.sh +``` + +On Windows, you can run `run_static.bat` from the command prompt with Visual +Studio's command line tools enabled and CMake and ninja build in the path: + +``` +call run_static.bat +``` + +### Static linking against system libraries + +You can also use static libraries of Arrow's dependencies from the +system. To run this configuration, set +`ARROW_DEPENDENCY_SOURCE=SYSTEM` for `run_static.sh`. You can use +`docker-compose` for this too: + +```bash +docker-compose run --rm static-system-dependency +``` + +[docker-compose]: https://docs.docker.com/compose/ |