cmake_parser/doc/command/project/
set_target_properties.rs1use cmake_parser_derive::CMake;
2
3use crate::{
4 command::common::Property,
5 doc::command_scope::{CommandScope, ToCommandScope},
6 Token,
7};
8
9#[derive(CMake, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
13#[cmake(pkg = "crate", default = "targets")]
14pub struct SetTargetProperties<'t> {
15 #[cmake(rename = "")]
16 pub targets: Vec<Token<'t>>,
17 pub properties: Vec<Property<'t>>,
18}
19
20impl<'t> ToCommandScope for SetTargetProperties<'t> {
21 fn to_command_scope(&self) -> CommandScope {
22 CommandScope::Project
23 }
24}
25
26#[cfg(test)]
27mod tests {
28 use super::*;
29 use crate::doc::cmake_parse::tests::{token, tokens_vec};
30 use crate::*;
31 use pretty_assertions::assert_eq;
32
33 #[test]
34 fn set_target_properties() {
35 let src = include_bytes!("../../../../../fixture/commands/project/set_target_properties");
36 let cmakelists = parse_cmakelists(src).unwrap();
37 let doc = Doc::from(cmakelists);
38 assert_eq!(
39 doc.commands(),
40 Ok(vec![Command::SetTargetProperties(Box::new(
41 SetTargetProperties {
42 targets: tokens_vec([b"_python"]),
43 properties: vec![Property {
44 prop: token(b"OUTPUT_NAME"),
45 value: token(b"${PROJECT_NAME}"),
46 }]
47 }
48 )),])
49 )
50 }
51}