Notes on Building C Code in Windows

2014-10-08 16:14

Just for fun I wanted to make some notes about how to compile a simple C program in Windows from the command line with the minimal of extras to install. If you go looking on the web almost all answers to the question "how do I compile a C program on windows?" is either to download and install Visual Studio Express for Windows (the free version of Visual Studio), to use MinGW or to get Cygwin.

A better basic answer in my humble opinion is that you can use the Microsoft Windows SDK to get a usable C/C++ compiler on your system.

Ok, so, how do you go about to compile a C-program from command line on Windows once you got the SDK installed?

First we have to locate the compiler. If installed by the SDK it can be found at C:\Program Files\Microsoft SDKs\Windows\< version >\bin\cl.exe but if you have Visual Studio installed it can be found at C:\Program Files (x86)\Microsoft Visual Studio < version >\VC\bin\cl.exe.

Of course, being windows, as I run through these examples the installation of the SDK fails so I resort to the fallback of using Visual Studio thus failing to prove my point of not need to install Visual Studio entirely.

So my initial assertion about there being a better basic answer to this is false.

Anyways...

Compile and link

Using the this simple test program (saved as main.c):

#include <stdio.h>

int main(int argc, char* argv[]) {
  printf("hello world!\n");
  return 0;
}

With Visual Studio installed just run a Developer Command Prompt (found under Tools section of Visual Studio program group), change dir to your project directory and run:

cl main.c

This should compile and link the code to give you a main.exe executable.

Just out of curiosity I wrote a bat file to accomplish the same thing my system (still using Visual Studio) without using the developer command prompt:

set compiler=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe
set include=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include
set lib=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\LIB;C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x86

"%compiler%" /I"%include%" main.c /link "%lib%"*

The magic of the develop command prompt is it runs the vcvarsall.bat to setup paths correctly. Have a look at it if you want to understand how it works. On my system it can be found in C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat.

Conclusion

The easiest way to compile a C-program in Windows is without doubt to install Visual Studio.

The second viable option, with a smaller footprint and very well suited for those coming from a UNIX world, is to use MinGW or Cygwin.

Resources