Xcode supports this really nicely but setting it up is a bit tricky. I took a run at this today and was quite happy with the results. Here’s what I did: On macOS 12.1, I started with a Hello directory that contains my source file and a make file: % find hello hello hello/hello.c hello/Makefile % cat hello/hello.c #include int main(int argc, char ** argv) { printf(Hello Cruel World!n); } % cat hello/Makefile hello: hello.c cc -o hello -g hello.c IMPORTANT The second line in hello/Makefile starts with a tab. I run Xcode 13.2.1 and chose File > New > Project and selected Other > External Build System. I named it XHello, just to keep things clear. I closed that project window. This left me with the following structure on disk: % find XHello XHello XHello/XHello.xcodeproj … lots of Xcode goo … I used the Finder to move XHello.xcodeproj to my hello directory. I opened that in Xcode. I chose Product > Build to check that it actually builds. I chose Product > Scheme