cmake_parser/doc/command/project/
link_directories.rs1use cmake_parser_derive::CMake;
2
3use crate::{
4 command::common::Append,
5 doc::command_scope::{CommandScope, ToCommandScope},
6 Token,
7};
8
9#[derive(CMake, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
13#[cmake(pkg = "crate", positional)]
14pub struct LinkDirectories<'t> {
15 pub append: Option<Append>,
16 pub dirs: Vec<Token<'t>>,
17}
18
19impl<'t> ToCommandScope for LinkDirectories<'t> {
20 fn to_command_scope(&self) -> CommandScope {
21 CommandScope::Project
22 }
23}
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28 use crate::doc::cmake_parse::tests::tokens_vec;
29 use crate::*;
30 use pretty_assertions::assert_eq;
31
32 #[test]
33 fn link_directories() {
34 let src = include_bytes!("../../../../../fixture/commands/project/link_directories");
35 let cmakelists = parse_cmakelists(src).unwrap();
36 let doc = Doc::from(cmakelists);
37 assert_eq!(
38 doc.commands(),
39 Ok(vec![
40 Command::LinkDirectories(Box::new(LinkDirectories {
41 append: None,
42 dirs: tokens_vec([b"include"])
43 })),
44 Command::LinkDirectories(Box::new(LinkDirectories {
45 append: Some(Append::Before),
46 dirs: tokens_vec([b"include1", b"include2"])
47 })),
48 Command::LinkDirectories(Box::new(LinkDirectories {
49 append: Some(Append::After),
50 dirs: tokens_vec([b"include1"])
51 })),
52 ])
53 )
54 }
55}