I'm setting up a new application (and the libraries coming with it) but I have hard time figuring out the process of building, esp. how CMake knows where to start building from.. By way of example, I'm trying to follow the process of setting up and building sel4test. Setting up the source dir structure: repo init -u https://github.com/seL4/sel4test-manifest.git & repo sync and creating the build dir md build & cd build Are perfectly understandable steps: create source tree that includes the app sources (./projects/sel4test/apps/sel4test-driver/ in this case) kernel (./kernel/) libraries (other subdirs under ./projects/) and misc tools (./tools/) and an extra subdir for build output The third "magic" CMake setup step ../init-build.sh -DPLATFORM=<platform> -DRELEASE=FALSE -DSIMULATION=TRUE enables a simple "ninja" command (without any params) to build an application from the sources at ./projects/sel4test/apps/sel4test-driver/ This is a mystery to me. Where is the target (sel4test-driver) specification in these steps? I looked into init-build.sh and my understanding is the CMake setup must be carried by this command: cmake -G Ninja "$@" -DSEL4_CACHE_DIR="$CACHE_DIR" -C "$project_dir/settings.cmake" "$project_dir" but I cannot figure how said command finds that the application we are trying to build is located in ./projects/sel4test/apps/sel4test-driver/ Now, when I try to setup my own app, how do I tell init-build.sh command where my app is? Thanks for any clarification, Chris