#build-script #script #build #cfg #macro

build build_cfg

Evaluate cfg() directives in build scripts

2 releases (1 stable)

1.1.0 Jan 13, 2022
0.1.0 Sep 26, 2021

#356 in FFI

Download history 76/week @ 2024-07-21 109/week @ 2024-07-28 91/week @ 2024-08-04 324/week @ 2024-08-11 194/week @ 2024-08-18 100/week @ 2024-08-25 103/week @ 2024-09-01 88/week @ 2024-09-08 81/week @ 2024-09-15 127/week @ 2024-09-22 107/week @ 2024-09-29 69/week @ 2024-10-06 100/week @ 2024-10-13 128/week @ 2024-10-20 105/week @ 2024-10-27 127/week @ 2024-11-03

467 downloads per month
Used in 10 crates (4 directly)

MIT license

9KB
177 lines

../README.md


lib.rs:

crates.io

build_cfg

Test cfg directives at build time!

Currently, cfg directives do not work "correctly" in a build script. This is because the build script must be compiled for the host machine to execute. Therefore, it is always compiled to target the native environment.

This means that we can't conditionally compile stuff in our build scripts depending on the target platform we pass in with --target. This crate aims to solve this problem by collecting and evaluating cfg directives at runtime during the build script.

Example

#[macro_use]
extern crate build_cfg;

#[build_cfg_main]
fn main() {
    if build_cfg!(all(target_os = "windows", target_pointer_width = "64")) {
        println!("Building for Windows 64-bit");
    } else {
        println!("Not building for Windows 64-bit");
    }
}

Dependencies

~1.5MB
~37K SLoC