서버와 클라이언트를 만들기에 앞서 리눅스의 가장 큰 장점인 Makefile을 만들어 보도록 하겠습니다.
먼저 예전에 만들어 보았던 Makefile 실습 입니다.
https://giantpark197cm.tistory.com/23?category=764851
저는 여기서 만든 것 처럼 폴더 형식을 구성하고
각 폴더에 필요한 Make파일을 만들어 가장 상위폴더에서는 각 Makefile을 호출하기만 하는 Make파일을 만들겠습니다.
그 전에 2인 개발 프로젝트이기 때문에 git을 활용하겠습니다.
git을 세팅하는 방법은
https://giantpark197cm.tistory.com/27?category=764851
여기에 있습니다.
repository 생성방법
깃허브 사이트에 접속하여 가입을 하시고 로그인을 해 보면 메인화면에
이렇게 repository를 생성할 수 있는 버튼이 있습니다.
누르시고 원하는 정보를 기입 하신 후 만드시면 위 그림처럼 항목이 하나 생겼을 것 입니다.
레파지토리를 선택하시고 settings -> Collaborators -> Add cooaborator로 원하는 사람과 함께 프로젝트를 함께 할 수 있습니다.
(인원을 추가하시고 초대 주소같은 것을 보내야 합니다.)
자 이제 본격적으로 터미널 상에서 Makefile을 만들어 보도록 하겠습니다.
만들기 전에 소스파일이 완전히 못쓰게 되어버려 되돌릴 때를 생각하여 브랜치를 만들겠습니다.
>> git checkout -b sever
우선 저는 server용 폴더와 client용 폴더를 따로 만들어서 각각의 용도에 맞게 clone하여 사용하도록 하고자 했습니다.
이런식으로 include(헤더파일들), lib(사용될 함수들), player(main문) 폴더들을 만들었습니다.
그리고 저번 실습과는 다르게 공유라이브러리를 사용하기위해 lib의 Makefile을 바꾸어 보았습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
CC=gcc
LIB=libmyfuncs.so.1.0
OBJS=func1.o func2.o
CFLAGS=-Wall
POINTER=libmyfuncs.so libmyfuncs.so.1
$(LIB): $(OBJS)
$(CC) -fPIC -shared -Wl,-soname=libmyfuncs.so.1 $(OBJS) -o $@ -lc
ln -s libmyfuncs.so.1.0 libmyfuncs.so
ln -s libmyfuncs.so.1.0 libmyfuncs.so.1
%.o: %.c
$(CC) -fPIC -c $(CFLAGS) -I../include $< -o $@
clean:
rm -f $(OBJS) $(LIB) $(POINTER) |
cs |
공유라이브러리를 사용하는 Make파일 입니다.
이번에는 player폴더의 main문을 컴파일해줄 Makefile입니다.
1
2
3
4
5
6
7
8
9
10
11
12 |
EXEC=main
CC=gcc
CFLAGS=-Wall
$(EXEC): main.o
$(CC) -o main main.o -L../lib -lmyfuncs
%.o: %.c
$(CC) -c $(CFLAGS) -I../include $< -o $@
clean:
rm main.o main |
cs |
마지막으로 가장 상위폴더의 makefile로써 각 폴더의 makefile을 호출하여 실행시키는 makefile을 만들겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
DIRS = lib player
.PHONY: all clean
all:
@for d in $(DIRS); \
do \
$(MAKE) -C $$d; \
done
clean:
@for d in $(DIRS); \
do \
$(MAKE) -C $$d clean; \
done |
cs |
이렇게 만들어 놓고 branch를 다시 master로 합치겠습니다.
>> git checkout master
>> git merge server
그 후 추가된 파일들을 git에 저장하도록 하겠습니다.
>> git add *
>> git commit -m "server Makefile add"
>> git push
결과 repository
'채팅 프로그램 제작' 카테고리의 다른 글
최종완성 및 프로젝트 분석 (0) | 2018.12.11 |
---|---|
[Client]코드와 설명 (0) | 2018.12.11 |
통신에 필요한 각 기능들을 헤더파일로 작성 (0) | 2018.11.28 |
[계획서]socket 통신을 이용한 채팅프로그램 (0) | 2018.11.19 |