Crate cmake_config

source ·
Expand description

This crate provides a parser for CMakeCache.txt files.

The primary entry points are parse_raw and parse_file_to_raw, which produces a vector of the minimally-processed CMake flags from a supplied path.

use cmake_config::{CMakeType, RawFlag};
use std::io::{BufReader, Cursor};
let s = r"FOO:BOOL=ON
BAR:STRING=BAZ";
let reader = BufReader::new(Cursor::new(s));
let flags = cmake_config::parse_raw(reader).expect("Parsing error!");
assert_eq!(vec![
            RawFlag {
                key: "FOO".into(),
                cmake_type: CMakeType::Bool,
                value: "ON".into(),
            },
            RawFlag {
                key: "BAR".into(),
                cmake_type: CMakeType::String,
                value: "BAZ".into(),
            },
], flags);

Optionally, Flags can be summarized from their initial RawFlag form into SimpleFlag instances for representation in Rust.

use cmake_config::{CMakeType, RawFlag, SimpleFlag, Key};
let raw = RawFlag {
          key: "FOO".into(),
          cmake_type: CMakeType::Bool,
          value: "ON".into(),
};
let simplified = SimpleFlag::from(&raw);
assert_eq!(SimpleFlag::Boolish(Key("FOO".into()), true), simplified);

SimpleFlag also provides a convenience method, generate_rust_const_item, which produces the text of a Rust-lang const definition for that flag.

Structs

A newtype wrapper for the key / property-name of a CMake flag. Mostly here to avoid confusion between the similarly-shaped key and value of a SimpleFlag::Stringish variant.
Represents a single CMake property

Enums

The type hint associated with a CMake property
The usual things that might go wrong when interpreting a CMakeCache blob of data
A pared-down and interpreted representation of a CMake flag

Functions

Convenience function determining if a string is usable without alteration as a Rust identifier for an item.
Convenience wrapper around parse_raw for reading a CMakeCache.txt file and handing back either a Vec of flags or a very simple error.
Most generic entry point, intended to interpret a buffered reader of CMakeCache textual data into the represented flags.