If you have run the full setup first, then yes.
The reason being that the full setup run generates header files that are needed by modules (like basext.h). That's why the source tree in git consists mainly of .c files; the headers are generated by the setup script. An advantage of this approach is that you only need to edit .c files if you want to add something to the core, unless you're introducing a new keyword, in which case you need to modify a couple of other files. But no header files.
Anyway, so if you already have executed setup by itself, you can then do ./setup --module=testing, for example.
That's the first step I use when creating a new module. Then I generally nuke everything except the interface.c file. If you configure that correctly (read the comments in the generated interface.c file) you don't have to mess around with headers, include files (meaning .bas files with the exported functions), the .jim/.jam files, or "make" files since they are all auto-generated for you by the setup script.
Also, as you've seen in a couple of the modules I've built, you can provide .c/.h source files for code you're trying to wrap (slre is an example) and they will be parsed and compiled along with your own module code into the final module library.
AIR.