āĻ‰ā§ŽāϏ āĻœā§‡āύāĻžāϰ⧇āϟāϰ

āĻāχ āĻĒ⧃āĻˇā§āĻ āĻžāϟāĻŋ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āωāĻ¤ā§āĻĒāĻ¨ā§āύ āĻ‰ā§ŽāϏ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϤāĻžāϰ āĻāĻ•āϟāĻŋ āωāĻšā§āϚ-āĻ¸ā§āϤāϰ⧇āϰ āĻĻ⧃āĻļā§āϝ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤

āϏāĻŽāĻ¸ā§āϤ āĻ‰ā§ŽāϏ āĻœā§‡āύāĻžāϰ⧇āϟāϰ āĻāĻ•āχ āϧāϰāύ⧇āϰ āĻŦāĻŋāĻ˛ā§āĻĄ-āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ āϤāĻŋāύāϟāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄ-āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āϏ⧋āĻ°ā§āϏ-āĻœā§‡āύāĻžāϰ⧇āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻŦāĻŋāĻ¨ā§āĻĄāĻœā§‡āύ, āĻāφāχāĻĄāĻŋāĻāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻāĻŦāĻ‚ āĻĒā§āϰ⧋āĻŸā§‹āĻŦāĻžāĻĢ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏāĻŋ āĻŦāĻžāχāĻ¨ā§āĻĄāĻŋāĻ‚ āϤ⧈āϰāĻŋ āĻ•āϰāϛ⧇āĨ¤

āĻ‰ā§ŽāĻĒāĻ¨ā§āύ āĻ‰ā§ŽāϏ āĻĨ⧇āϕ⧇ āĻ•ā§āϰ⧇āϟ

āϏ⧋āĻ°ā§āϏ āϕ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻāĻŽāύ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϰāĻžāĻ¸ā§āϟ āĻŽāĻĄāĻŋāωāϞ āĻāĻ•āϟāĻŋ āĻ•ā§āϰ⧇āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇, āĻ āĻŋāĻ• āϝ⧇āύ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ rust_library āĻšāĻŋāϏāĻžāĻŦ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ (āĻāϰ āĻŽāĻžāύ⧇ āĻāϟāĻŋ rustlibs , rlibs , āĻāĻŦāĻ‚ dylibs āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻšāĻŋāϏāĻžāĻŦ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤) āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āϕ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āϏāĻ°ā§āĻŦā§‹āĻ¤ā§āϤāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻšāϞ āĻ•ā§āϰ⧇āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āωāĻ¤ā§āĻĒāĻ¨ā§āύ āωāĻ¤ā§āϏāϕ⧇ āύāĻŋāϝāĻŧā§‹āĻ— āĻ•āϰāĻžāĨ¤ āϝāĻĻāĻŋāĻ“ include! āĻŽā§āϝāĻžāĻ•ā§āϰ⧋ āĻœā§‡āύāĻžāϰ⧇āĻŸā§‡āĻĄ āϏ⧋āĻ°ā§āϏ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ, āĻāϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻšāϞ external/ āĻ āĻĨāĻžāĻ•āĻž āϤ⧃āϤ⧀āϝāĻŧ āĻĒāĻ•ā§āώ⧇āϰ āϕ⧋āĻĄāϕ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻžāĨ¤

āĻāĻŽāύ āĻ•āĻŋāϛ⧁ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϰāϝāĻŧ⧇āϛ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āϕ⧋āĻĄ āĻāĻ–āύāĻ“ include!() āĻŽā§āϝāĻžāĻ•ā§āϰ⧋āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϤ⧈āϰāĻŋ āωāĻ¤ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āϝ⧇āĻŽāύ āφāĻĒāύāĻŋ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻ…āύāĻ¨ā§āϝ āĻĢā§āϝāĻžāĻļāύ⧇ āωāĻ¤ā§āϏ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻāĻ•āϟāĻŋ genrule āĻŽāĻĄāĻŋāωāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύāĨ¤

āĻ‰ā§ŽāĻĒāĻ¨ā§āύ āĻ‰ā§ŽāϏ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ!() āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ

āĻāĻ•āϟāĻŋ āĻ•ā§āϰ⧇āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āωāĻ¤ā§āĻĒāĻ¨ā§āύ āωāĻ¤ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ (āĻ¸ā§āĻŦāϤāĻ¨ā§āĻ¤ā§āϰ) āĻŽāĻĄāĻŋāωāϞ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āωāĻĻāĻžāĻšāϰāĻŖ āĻĻā§āĻŦāĻžāϰāĻž āφāĻšā§āĻ›āĻžāĻĻāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ. āĻāχ āĻŦāĻŋāĻ­āĻžāĻ—āϟāĻŋ āĻĻ⧇āĻ–āĻžāϝāĻŧ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ include!() āĻŽā§āϝāĻžāĻ•ā§āϰ⧋āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āωāĻ¤ā§āĻĒāĻ¨ā§āύ āωāĻ¤ā§āϏ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāϤ⧇ āĻšāϝāĻŧāĨ¤ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ āĻāχ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϟāĻŋ āϏāĻŽāĻ¸ā§āϤ āωāĻ¤ā§āϏ āĻœā§‡āύāĻžāϰ⧇āϟāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āύ⧁āϰ⧂āĻĒāĨ¤

āĻĒā§‚āĻ°ā§āĻŦāĻļāĻ°ā§āϤ

āĻāχ āωāĻĻāĻžāĻšāϰāĻŖāϟāĻŋ āĻāχ āϧāĻžāϰāĻŖāĻžāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝ⧇ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ rust_bindgen āĻŽāĻĄāĻŋāωāϞ ( libbuzz_bindgen ) āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰ⧇āϛ⧇āύ āĻāĻŦāĻ‚ include!() āĻŽā§āϝāĻžāĻ•ā§āϰ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āωāĻ¤ā§āĻĒāĻ¨ā§āύ āωāĻ¤ā§āϏ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϧāĻžāĻĒ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āύāĻž āĻĨāĻžāϕ⧇, āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ rust bindgen āĻŽāĻĄāĻŋāωāϞ āύāĻŋāĻ°ā§āϧāĻžāϰāϪ⧇ āϝāĻžāύ, libbuzz_bindgen āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āĻāĻ–āĻžāύ⧇ āĻĢāĻŋāϰ⧇ āφāϏ⧁āύāĨ¤

āύ⧋āϟ āĻ•āϰ⧁āύ āϝ⧇ āĻāϰ āĻŦāĻŋāĻ˛ā§āĻĄ-āĻĢāĻžāχāϞ āĻ…āĻ‚āĻļāϗ⧁āϞāĻŋ āϏāĻŽāĻ¸ā§āϤ āωāĻ¤ā§āϏ āĻœā§‡āύāĻžāϰ⧇āϟāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝ⧋āĻœā§āϝāĨ¤

āωāĻ¤ā§āĻĒāĻ¨ā§āύ āωāĻ¤ā§āϏ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϏāĻš external/rust/hello_bindgen/Android.bp āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ:

rust_binary {
   name: "hello_bzip_bindgen_include",
   srcs: [
         // The primary rust source file must come first in this list.
         "src/lib.rs",

         // The module providing the bindgen bindings is
         // included in srcs prepended by ":".
         ":libbuzz_bindgen",
    ],

    // Dependencies need to be redeclared when generated source is used via srcs.
    shared_libs: [
        "libbuzz",
    ],
}

āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϏāĻš external/rust/hello_bindgen/src/bindings.rs āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ:

#![allow(clippy::all)]
#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(unused)]
#![allow(missing_docs)]

// Note that "bzip_bindings.rs" here must match the source_stem property from
// the rust_bindgen module.
include!(concat!(env!("OUT_DIR"), "/bzip_bindings.rs"));

āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϏāĻš external/rust/hello_bindgen/src/lib.rs āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ:

mod bindings;

fn main() {
    let mut x = bindings::foo { x: 2 };
    unsafe { bindings::fizz(1, &mut x as *mut bindings::foo) }
}

āϕ⧇āύ āωāĻ¤ā§āĻĒāĻ¨ā§āύ āωāĻ¤ā§āϏ āϜāĻ¨ā§āϝ crates

C/C++ āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āĻĨ⧇āϕ⧇ āĻ­āĻŋāĻ¨ā§āύ, rustc āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• āĻ‰ā§ŽāϏ āĻĢāĻžāχāϞ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇ āϝāĻž āĻāĻ•āϟāĻŋ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻŦāĻž āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ āĻāĻ¨ā§āĻŸā§āϰāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āφāĻļāĻž āĻ•āϰ⧇ āϝ⧇ āϏ⧋āĻ°ā§āϏ āĻŸā§āϰāĻŋāϟāĻŋ āĻāĻŽāύāĻ­āĻžāĻŦ⧇ āĻ—āĻ āύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻžāϤ⧇ āϏāĻŽāĻ¸ā§āϤ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϏ⧋āĻ°ā§āϏ āĻĢāĻžāχāϞ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āφāĻŦāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻāϰ āĻŽāĻžāύ⧇ āĻšāϞ āϝ⧇ āωāĻ¤ā§āĻĒāĻ¨ā§āύ āωāĻ¤ā§āϏ āĻ…āĻŦāĻļā§āϝāχ āωāĻ¤ā§āϏ āĻ—āĻžāϛ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āĻŦāĻž āωāĻ¤ā§āϏ⧇ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

include!("/path/to/hello.rs");

āĻŽāϰāĻŋāϚāĻž āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧ āĻāχ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ build.rs āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āĻ—ā§‹ āĻŦāĻŋāĻ˛ā§āĻĄ āĻĒāϰāĻŋāĻŦ⧇āĻļ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ…āύ⧁āĻŽāĻžāύ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇āĨ¤ āϝāĻ–āύ āĻāϟāĻŋ āϤ⧈āϰāĻŋ āĻšāϝāĻŧ, cargo āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻāĻ•āϟāĻŋ OUT_DIR āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϏ⧇āϟ āĻ•āϰ⧇ āϝāĻžāϰ āĻŽāĻ§ā§āϝ⧇ build.rs āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϗ⧁āϞāĻŋ āĻœā§‡āύāĻžāϰ⧇āĻŸā§‡āĻĄ āϏ⧋āĻ°ā§āϏ āϕ⧋āĻĄ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻŦ⧇ āĻŦāϞ⧇ āφāĻļāĻž āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āϏ⧋āĻ°ā§āϏ āϕ⧋āĻĄ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ:

include!(concat!(env!("OUT_DIR"), "/hello.rs"));

āĻāϟāĻŋ Soong-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻšā§āϝāĻžāϞ⧇āĻžā§āϜ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇ āĻ•āĻžāϰāĻŖ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻŽāĻĄāĻŋāωāϞ⧇āϰ āφāωāϟāĻĒ⧁āϟāϗ⧁āϞāĻŋ āϤāĻžāĻĻ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ out/ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ 1 āĻ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻŽāύ āĻāĻ•āϟāĻŋ OUT_DIR āύ⧇āχ āϝ⧇āĻ–āĻžāύ⧇ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻžāϗ⧁āϞāĻŋ āϤāĻžāĻĻ⧇āϰ āĻ‰ā§ŽāĻĒāĻ¨ā§āύ āωāĻ¤ā§āϏ āφāωāϟāĻĒ⧁āϟ āĻ•āϰ⧇āĨ¤

āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āϕ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ, AOSP āĻĒā§āϝāĻžāϕ⧇āϜāĻŋāĻ‚ āĻ‰ā§ŽāĻĒāĻ¨ā§āύ āĻ‰ā§ŽāϏāϕ⧇ āĻāĻ•āϟāĻŋ āĻ•ā§āϰ⧇āĻŸā§‡ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧇ āϝāĻž āφāĻŽāĻĻāĻžāύāĻŋ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ•āĻžāϰāϪ⧇:

  • āωāĻ¤ā§āĻĒāĻ¨ā§āύ āωāĻ¤ā§āϏ āĻĢāĻžāχāϞ āύāĻžāĻŽ āϏāĻ‚āϘāĻ°ā§āώ āĻĨ⧇āϕ⧇ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰ⧁āύ.
  • āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāϪ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āϜ⧁āĻĄāĻŧ⧇ āĻŦāϝāĻŧāϞāĻžāϰāĻĒā§āϞ⧇āϟ āϕ⧋āĻĄ āĻšā§‡āĻ•-āχāύ āĻ•āĻŽ āĻ•āϰ⧁āύāĨ¤ āϝ⧇āϕ⧋āύ āĻŦāϝāĻŧāϞāĻžāϰāĻĒā§āϞ⧇āϟ āϝāĻž āĻœā§‡āύāĻžāϰ⧇āĻŸā§‡āĻĄ āϏ⧋āĻ°ā§āϏāϕ⧇ āĻāĻ•āϟāĻŋ āĻ•ā§āϰ⧇āĻŸā§‡ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ āϤāĻž āϕ⧇āĻ¨ā§āĻĻā§āϰ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāĻŖ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāĻž āϕ⧋āĻĄ āĻāĻŦāĻ‚ āφāĻļ⧇āĻĒāĻžāĻļ⧇āϰ āĻ•ā§āϰ⧇āĻŸā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻšāĻŋāϤ 2āϟāĻŋ āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϚāϞ⧁āύāĨ¤
  • āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻ‰ā§ŽāĻĒāĻ¨ā§āύ āωāĻ¤ā§āϏāϗ⧁āϞāĻŋāϕ⧇ āĻ—āϤāĻŋāĻļā§€āϞāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇ āĻŽā§‡āĻŽāϰāĻŋ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ¸ā§āϕ⧇āϰ āωāĻĒāϰ āϚāĻžāĻĒ āĻ•āĻŽāĻžāϝāĻŧ⧎

āĻĢāϞāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡āϰ āϏāĻŽāĻ¸ā§āϤ āĻŽāϰāĻŋāϚāĻž āϏ⧋āĻ°ā§āϏ āĻœā§‡āύāĻžāϰ⧇āĻļāύ āĻŽāĻĄāĻŋāωāϞ āϧāϰāύ⧇āϰ āϕ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āϝāĻž āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āĻāĻŦāĻ‚ āĻ•ā§āϰ⧇āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ āϏ⧁āĻ‚ āĻāĻ–āύāĻ“ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ›āĻžāĻĄāĻŧāĻžāχ āϤ⧃āϤ⧀āϝāĻŧ-āĻĒāĻ•ā§āώ⧇āϰ āĻ•ā§āϰ⧇āϟ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻŽāĻĄāĻŋāωāϞ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ¸ā§āϤ āωāĻ¤ā§āĻĒāĻ¨ā§āύ āωāĻ¤ā§āϏ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻ•āĻžāĻ°ā§āĻ—ā§‹āϰ āĻ…āύ⧁āϰ⧂āĻĒ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• āĻĒā§āϰāϤāĻŋ-āĻŽāĻĄāĻŋāωāϞ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāχ āϧāϰāύ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āĻŽāĻĄāĻŋāωāϞ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ Soong āϏ⧇āχ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ OUT_DIR āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϏ⧇āϟ āĻ•āϰ⧇, āϝāĻžāϤ⧇ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāĻž āĻ‰ā§ŽāϏ āϖ⧁āρāĻœā§‡ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧāĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻŦāĻ°ā§āĻŖāĻŋāϤ āĻ•āĻžāϰāĻŖāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ, āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āϕ⧋āĻĄā§‡ āĻāχ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϏāĻ°ā§āĻŦā§‹āĻ¤ā§āϤāĻŽ āĻ…āύ⧁āĻļā§€āϞāύ āϝāĻ–āύ āĻāϟāĻŋ āĻāϕ⧇āĻŦāĻžāϰ⧇ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāĨ¤


  1. āĻāϟāĻŋ C/C++ āĻāĻŦāĻ‚ āĻ…āύ⧁āϰ⧂āĻĒ āĻ­āĻžāώāĻžāϰ āϜāĻ¨ā§āϝ āϕ⧋āύ⧋ āϏāĻŽāĻ¸ā§āϝāĻž āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇ āύāĻž, āĻ•āĻžāϰāĻŖ āĻ‰ā§ŽāĻĒāĻ¨ā§āύ āĻ‰ā§ŽāϏ⧇āϰ āĻĒāĻžāĻĨ āϏāϰāĻžāϏāϰāĻŋ āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰāϕ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ ↩

  2. āϝ⧇āĻšā§‡āϤ⧁ include! āĻĒāĻžāĻ ā§āϝ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤāĻŋ āĻĻā§āĻŦāĻžāϰāĻž āĻ•āĻžāϜ āĻ•āϰ⧇, āĻāϟāĻŋ āφāĻŦāĻĻā§āϧ āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ āĻĨ⧇āϕ⧇ āĻŽāĻžāύ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āĻŦāĻž #![foo] āĻāϰ āĻŽāϤ⧋ āĻ—āĻ āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāχ āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻšāĻŋāϤ āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻŦāϜāĻžāϝāĻŧ āϰāĻžāĻ–āĻž āĻ•āĻ āĻŋāύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āϝāĻ–āύ āĻŦāĻžāĻ•āĻŋ āĻ•ā§āϰ⧇āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āϰāĻŋāϝāĻŧāĻž āϏāĻ¤ā§āϝāĻŋāχ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ āϤāĻ–āύ āϏāĻ°ā§āĻŦāĻĻāĻž āĻŽā§āϝāĻžāĻ•ā§āϰ⧋ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧁āύāĨ¤ ↩