2023. 11. 26. 00:27ㆍEmbedded
https://www.youtube.com/watch?v=JhZiIHQ87QE
- make / Makefile
make : 실행명령어 / 하나의 실행 프로그램이라 보면 된다.
실행명령어에 맞는 규칙을 작성해줘야 한다.
하나의 파일에 대해 기술하는 것이 Makefile이다. / 확장자가 없는 파일
make는 실행프로그램 / make파일들이 어떤내용들로 실행될 것인지 기술되어 있는 것이 Makefile이라 보면 된다.
setup : // make setup
mkdir log
init_designn : setup // make init_design
icc_shell -f .rm_icc2/iinit.tcl
place_opt : setup init-design // make place_opt, 의존성
mkdir -f ./rm-icc2/place_opt.ttcl // 명령어
clean : // make clean
rm -rf log
//Makefile 기본구조
//타겟명 : 의존성
// 타겟에 기술되어 있는 명령어
"make 어플리케이션" 이름의 구조이다.
- ex1)
setup :
mkdir ./log
hello :
echo "hello" > ./log/hello.txt
clean :
rm -rf ./log
이제 해당 Makefile에서 작성된 make타겟들을 실행해보면
- make setup : log라는 디렉토리를 생성
- make hello : hello라는 텍스트를 ./log/hello.txt경로의 파일에 저장
- make clean : log디렉토리 제거
로 실행 가능하다.
의존성은 해당 타겟명령이 실행되기 전에 먼저 진행되어야 하는 부분을 기술
- ex2-1)
setup :
mkdir ./log
hello : setup //setup이 잘 실행되는지 점검하고 hello실행
echo "hello" > ./log/hello.txt
clean :
rm -rf ./log
- make hello : 이제 의존성부분에 setup이 존재하므로 setup실행 후 hello 실행
-> log 디렉토리 생성 후 hello 텍스트 파일 생성
- ex2-2)
setup : setup.s // setup.s파일이 있는지 확인
mkdir ./log
hello : setup //setup이 잘 실행되는지 점검하고 hello실행
echo "hello" > ./log/hello.txt
clean :
rm -rf ./log
make setup : 실행 시
- 변수
변수명 = 값 // 변수 선언 후 값을 저장하여 사용할 수 있다. $(변수명)
변수명이 미리 지정되어 있는 것
- $@ : 현재의 목표파일 (Target)
- $^ : 현재 타겟의 종속 항목 리스트
- .PHONY : 실행 규칙을 위한 타겟명으로 사용하기 위한 것
-> 타겟명으로 사용하는 단어가 파일명으로 있는 경우 충돌이 발생 / 불필요하게 반복하여 실행하는 것을 예방하기 위한 것
- ex3-1)
APP=hello
setup : setup.s
mkdir ./log
$(APP) : setup
echo "hello" > ./log/$(APP).txt
clean :
rm -rf ./log
make hello 실행 시
- ex3-2)
APP=hello
setup : setup.s
mkdir ./log
hello_world : setup
echo "hello" > ./log/$(APP).txt
echo "hello" > ./log/$@.txt //$@는 타겟명을 가지고 오기 때문에 타겟명인 hello_world를 가지고 온다.
echo "hello" > ./log/$^.txt //$^는 의존성값을 가지고 오기 때문에 setup을 변수명으로 가지고 온다
clean :
rm -rf ./log
make hello_world 실행 시
- ex4)
APP=hello
setup : setup.s
mkdir ./log
hello_world : setup
echo "hello" > ./log/$(APP).txt
echo "hello" > ./log/$@.txt
echo "hello" > ./log/$^.txt
log :
echo "hello log"
clean :
rm -rf ./log
make log 실행 시
APP=hello
setup : setup.s
mkdir ./log
hello_world : setup
echo "hello" > ./log/$(APP).txt
echo "hello" > ./log/$@.txt
echo "hello" > ./log/$^.txt
log :
echo "hello log"
.PHONY:log //해당 명령어 사용 시 log가 타겟명이라고 Makefile에게 알려준다.
clean :
rm -rf ./log
이젠 make log 실행 시
'Embedded' 카테고리의 다른 글
[임베디드 SW엔지니어링 스마트 직무강좌] 1. 임베디드 시스템 개요 (0) | 2023.08.12 |
---|