@@ -38,16 +38,11 @@ build-arxiv = "myst build --pdf"
3838build-tex = " myst build --tex"
3939build-docx = " myst build --docx"
4040build-cff = " myst build --cff"
41- build-meca = " myst build --meca"
4241
4342# Combined tasks
44- build = { depends-on = [" build-html" , " build-pdf" , " build-cff" ] }
43+ build-manuscript = { depends-on = [" build-html" , " build-pdf" , " build-cff" ] }
4544build-pdfs = { depends-on = [" build-pdf" , " build-arxiv" ] }
46- build-complete = { depends-on = [" build-html" , " build-pdfs" , " build-tex" , " build-docx" , " build-cff" , " build-meca" ] }
47-
48- # Build source code
49- build-src = { cmd = " mkdir -p build && cd build && cmake ../src && make" , cwd = " ." }
50- test-src = { cmd = " cd build && ctest" , cwd = " ." , depends-on = [" build-src" ] }
45+ build-meca = { cmd = " myst build --meca" , depends-on = [" build-html" , " build-pdfs" , " build-tex" , " build-docx" , " build-cff" ] }
5146
5247# Start development server
5348start = " myst start"
@@ -57,16 +52,54 @@ dev = { depends-on = ["serve"] }
5752# Clean build artifacts
5853clean = " myst clean"
5954
60- [feature .cmake .dependencies ]
55+ # Aggregate, standard build task
56+ build = { depends-on = [" build-manuscript" , " test-project" ] }
57+
58+ [feature .cxx .dependencies ]
6159cmake = " *"
6260make = " *"
6361ninja = " *"
6462
65- [feature .cmake .tasks ]
66- configure-cmake = " cmake -B build -S src"
67- build-cmake = " cmake --build build"
68- test-cmake = " cd build && ctest"
63+ [feature .cxx .tasks .clone-itk ]
64+ cmd = [" stat" , " build/ITK" , " >/dev/null" , " ||" ,
65+ " git" , " clone" ,
66+ " https://github.com/InsightSoftwareConsortium/ITK" ,
67+ " build/ITK" ]
68+ outputs = [" build/ITK/LICENSE" ]
69+ description = " Fetch ITK's source code"
70+
71+ [feature .cxx .tasks .configure-itk ]
72+ cmd = ''' cmake -Bbuild/ITK-build -Sbuild/ITK -GNinja
73+ -DBUILD_EXAMPLES:BOOL=OFF
74+ -DBUILD_TESTING:BOOL=OFF'''
75+ depends-on = [" clone-itk" ]
76+ outputs = [" build/ITK-build/CMakeFiles/**" ]
77+ description = " Configure ITK"
78+
79+ [feature .cxx .tasks .build-itk ]
80+ cmd = " cmake --build build/ITK-build"
81+ depends-on = [" configure-itk" ]
82+ outputs = [" build/ITK-build/**" ]
83+ description = " Build ITK"
84+
85+ [feature .cxx .tasks .configure-project ]
86+ cmd = ''' cmake -Bbuild/project-build -Ssrc -GNinja
87+ -DITK_DIR=$(pwd)/build/ITK-build'''
88+ depends-on = [" build-itk" ]
89+ outputs = [" build/project-build/CMakeFiles/**" ]
90+ description = " Configure the project"
91+
92+ [feature .cxx .tasks .build-project ]
93+ cmd = " cmake --build build/project-build"
94+ depends-on = [" configure-project" ]
95+ outputs = [" build/project-build/**" ]
96+ description = " Build the project"
97+
98+ [feature .cxx .tasks .test-project ]
99+ cmd = " cd build/project-build && ctest"
100+ depends-on = [" build-project" ]
101+ description = " Test the project"
69102
70103[environments ]
71104default = { features = [], solve-group = " default" }
72- dev = { features = [" cmake " ], solve-group = " default" }
105+ cxx = { features = [" cxx " ], solve-group = " default" }
0 commit comments