> For the complete documentation index, see [llms.txt](https://whs3-doge5k.gitbook.io/smartcontract-security-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://whs3-doge5k.gitbook.io/smartcontract-security-docs/basics/6.-foundry/forge/forge-build.md).

# forge build

## 컴파일

### 명령어 형식

```bash
$ forge build
```

forge build 명령어는 프로젝트 내 src/ 폴더에 있는 Solidity 파일들을 컴파일한다.\
이때, Solidity 파일이 `import`하고 있는 외부 파일들도 함께 컴파일 대상이 된다.

***

### 컴파일 결과물 저장 위치: out/

컴파일 결과는 out/ 폴더에 저장된다.\
이 폴더에는 각 Solidity 파일에 대응되는 .json 파일이 생성되며 내부에는 다음과 같은 정보가 포함된다.

* ABI (Application Binary Interface)
* 바이트코드 (Bytecode)

이 정보들이 실제로 스마트 컨트랙트를 배포하거나 호출할 때 사용하는 핵심 데이터이다.

***

### 캐시 폴더: cache/

forge build를 실행하면 out/과 함께 cache/ 폴더도 생성된다.\
이 폴더는 이전 컴파일 결과를 저장하여 불필요한 재컴파일을 방지하는 역할을 한다.

즉, 코드 변경이 없는 경우 같은 파일을 다시 컴파일하지 않아 컴파일 속도를 크게 향상시킬 수 있다.

***

### 요약

| 항목          | 설명                               |
| ----------- | -------------------------------- |
| forge build | Solidity 파일들을 컴파일하는 명령어          |
| src/        | 컴파일 대상이 되는 스마트 컨트랙트 파일들이 위치한 폴더  |
| out/        | 컴파일 결과(ABI, 바이트코드)가 저장되는 폴더      |
| cache/      | 이전 컴파일 정보가 저장되는 폴더로, 중복 컴파일을 방지함 |
