Building and Testing

This guide covers the essential commands for compiling the glmnetpp library and running its unit tests to ensure correctness. All commands are run using Bazel from the root of the glmnetpp directory.

Building the Library

The bazel build command compiles the C++ source code. The glmnetpp library is header-only, so this step primarily checks for compilation errors and ensures all dependencies are correctly resolved.

You can build the library in two main configurations:

1. Optimized (Release) Mode This mode compiles the code with full optimizations and should be used for benchmarking or creating a release version. Use the -c opt flag.

# Build in optimized mode
bazel build -c opt //:glmnetpp

2. Debug Mode This mode includes debugging symbols and is useful during development. Use the -c dbg flag.

# Build in debug mode
bazel build -c dbg //:glmnetpp

Note

On Linux, you can specify whether to use gcc or clang by adding the --config=gcc or --config=clang flag to your build command.

Running Unit Tests

The unit test suite uses the GoogleTest framework to verify the logical correctness of the C++ code. Tests should always be run in debug mode (-c dbg) to ensure the best possible error messages and debugging information.

1. Run All Tests To run every test in the project, use the //test/... wildcard target.

bazel test -c dbg //test/...

2. Run a Single Test When debugging a specific issue, it is much faster to run a single test target. Replace <name-of-test> with the name of the test target defined in the test/BUILD.bazel file.

bazel test -c dbg //test:<name-of-test>