# Make in Windows

## Installation

There are several ways to install Make on Windows. In this tutorial we will use Git Bash because it is also needed for [Git ](/onboarding/git-and-github.md)on Windows, so you might already have that if you followed the steps in [Onboarding](/onboarding/checklist.md). The steps follow the instructions detailed [here](https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058). After installing Git & Git Bash:

* Go to [ezwinports](https://sourceforge.net/projects/ezwinports/files/).
* Download `make-4.4-without-guile-w32-bin.zip` (get the version without guile).
* Extract zip.
* Copy the contents to your `C:\Program Files\Git\mingw64\` merging the folders, but do NOT overwrite/replace any existing files.

## Using Makefiles in different environments

Commands are called differently in different environments, for example, if you want to run Stata in Git Bash terminal on Windows you should use `StataMP-64`, but `stata` on Mac and Linux. Aliases don't work well in our setting (as Make is run in Git Bash, but Make itself uses the sh shell). Although if you include an operation system detector part at the beginning of your Makefile, it provides a simple solution for a reproducible Makefile in different environments.&#x20;

Let's create a project folder called `trial/`, where the codes can be run with a Makefile both on Windows and Mac or Linux. There should be 2 files in the folder: `trial.do` and `Makefile`. The `trial.do` creates a `trial.log` just to see and check whether Make runs correctly. The content of `trail.do` is the following:

```
capture log close
log using "trial.log", replace text
disp "DateTime: $S_DATE $S_TIME"
log close
```

You can copy the following content in your `Makefile`:

```
#OS detector part
ifeq ($(OS),Windows_NT) # is Windows_NT on XP, 2000, 7, Vista, 10... STATA := StataMP-64 else STATA := stata endif

#Code starts here
trial.log: trial.do $(STATA) -e do $<
```

When you finished, open the Git Bash terminal, go to the `trial/` folder where the `trail.do` and your `Makefile` is, and then run `make`.

```
$ cd ~/.../trial/
$ ls
  trial.do
  Makefile
$ make
```

Afterward, you should see the `trial.log` created by the `Makefile`.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://handbook.microdata.io/tools/make/make-in-windows.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
