소스코드에서 실행 가능한 SW
로 변환하는 과정 또는 결과물
Compile & Assemble
하나의 소스코드 파일이 0과 1로 구성된 Object 파일로 만들어진다.
gcc -c [c파일명]
: c파일이 .o를 가진 object 파일로 변경
Linking
만들어진 Object 파일들과 Lib 파일들을 하나로 합친다.
gcc [o파일명] -o [실행파일명]
실행
실행파일명
을 통해 실행시키기
빌드를 해야할 때마다 컴파일과 링크를 하지 않고, 하나의 스크립트를 만들어 스크립트만 실행하여 빌드를 진행
하도록 할 수 있습니다.
다음과 같은 명령어를 통해 스크립트 제작 후 실행파일을 실행할 수 있지만, 하나의 파일을 수정해도 모든 파일을 컴파일 및 링크해야 하는 단점
이 있다. 결국, 느리다
는 단점이 있다.
이 단점을 해결시켜주는게 make 시스템
이다.
Build System
: Build 할 때 필요한 여러 작업을 도와주는 프로그램들, 빠르다
는 장점이 있다.
종류
:
make
는 각각의 소스코드 파일의 생성날짜를 기록합니다. 해당 파일을 수정하면 기록날짜가 변경되어, 수정된 파일을 구별
할 수 있습니다.
apt install make y
를 통해 설치하기
- 기존 object 파일들 및 실행파일들을 삭제해준다.
- "
makefile
"이라는 스크립트 파일을 생성한다.make
라는 명령어를 통해 스크립트를 실행한다.
makefile
구성
make의 장점은 수정된 파일만 컴파일 및 링크하기 때문에 속도가 빠르다
.
make보다 조금 더 편한 방식인 cmake 방식
이다.
cmake
: makefile를 자동 생성할 수 있는 build system(빌드 과정에 도움을 주는 툴)
sudo apt install g++ cmake y
를 통해 cmake 설치
1.
CMakeLists.txt
파일 생성
2.cmake .
명령어를 통해 makefile 생성
3.make
명령어를 통해 빌드
4../[실행파일명]
으로 생성한 실행파일 실행
CMakeLists.txt
make [Target 명]
: 지정된 Target을 수행한다.
make
: 첫 번째 Target을 수행한다.
스크립트 내에는 반드시 1개 이상의 Target이 존재해야 한다.
echo
: 화면 출력 shell 명령어, 띄어쓰기는 그냥 띄면 되는데, 어려번 띄어도 1번 띈걸로 판단합니다.
@echo
: 두 번 출력을 막는다. 결과만 출력된다.
$@
: Target을 나타내는 변수
HI :
echo "Hello";
make HI
==>
echo "Hello";
"Hello";
///////////////
HI :
@echo "Hello";
make HI
==>
"Hello";
해당 이미지에서 bluepink라는 타겟 옆에 적은 부분이 의존성 타겟
에 해당됩니다.
매크로는 결국 변수
를 뜻합니다.
매크로는 어느 위치든 작성해줘도 되지만, 매크로는 대체로 위에다 작성하면 밑에 작성해도 위에서 인식하도록 동작
된다.
#
을 통해 주석
+=
기호는 한 칸 띄어쓰기 후 뒤에 붙인다.
:=
-> 현재 기준에서의 값을 넣는다.
=
-> 최종 변수 결과를 집어 넣는다.