본문 바로가기
CS

[용어정리]빌드와 컴파일의 차이

by sorryisme 2024. 10. 6.

빌드

  • 컴파일을 포함한 프로세스 전체를 뜻함
  • 소스 코드 파일을 실행 가능한 소프트웨어 산출물로 변환하는 과정
  • 링크를 통해서 실행파일이나 라이브러리 파일을 말하기 때문에 컴파일 이후 링크 작업까지 포함함

컴파일

  • 소스 코드를 바이너리 파일로 변환하는 과정

실제 빌드 툴 예시

Wepack

scripts/build.js

  • 웹팩의 빌드 스크립트를 까보면 컴파일러라는 용어를 확인할 수 있다.
  • 기본적으로 npm run build 시 리액트를 번들링하고 최적화하여 빌드한다
  • 이 역할을 Webpack을 통해 수행한다
  • 모듈 번들링 은 의존성 그래프를 분석하여 번들링하는 작업 또한 포함된다

 

 

NestJs

  • nestjs 또한 내부적으로 웹팩을 통한 빌드를 수행하고 있다

 

 

Maven

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>mavenProject</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>
  • 빌드 정보를 담고 있는 파일이며 의존성 및 컴파일 관련 정보 등의 메타정보를 담고 있다.

Maven 패키징 빌드 시

 

 

 

Gradle

plugins {
    id("java")
}

group = "org.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

dependencies {
    testImplementation(platform("org.junit:junit-bom:5.10.0"))
    testImplementation("org.junit.jupiter:junit-jupiter")
}

tasks.test {
    useJUnitPlatform()
}
  • 그레이들도 마찬가지로 build.gradle 파일에서 설정 정보를 확인할 수 있다

  • 그레이들 Jar build 명령어 수행 시 컴파일 테스크를 수행함을 알 수 있다

출처 :

https://techykit.quora.com/What-is-the-difference-between-build-and-compile-in-terms-of-program-execution

https://statuscode.tistory.com/4

https://create-react-app.dev/docs/available-scripts/