Programming/C

[Windows] Makefile, batch 파일 예제 코드 저장본

Tribal 2018. 4. 3. 20:39

환경 : Visual Studio 2015 기준, 다른 버전 사용시 환경 변수에 등록되는 Visual Studio의 경로를 해당 Visual Studio에 맞는 경로로 수정


build.bat : make 하기 전, 사전 세팅을 위한 배치 파일

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
:Start
SET VSPATH=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
 
SET INCLUDE=C:\Program Files\OpenSSL\include;%INCLUDE%
SET LIB=C:\Program Files\OpenSSL\lib;%LIB%
SET LIBPATH=C:\Program Files\OpenSSL\lib;%LIBPATH%
SET COMSPEC=cmd.exe
 
:BuildCommand
ECHO "================================================="
ECHO "| [+] Environment variables are ready to build. |"
ECHO "| [+] Please enter the following command:       |"
ECHO "|                                               |"
ECHO "|     nmake -f ssl_minivet.mk all               |"
ECHO "================================================="
 
:VScmd
%COMSPEC% /k ""%VSPATH%\vcvarsall.bat"" amd64
 
cs
  • ws2_32.lib과 같이 추가로 라이브러리 등을 로드 하는 경우, 환경 변수에 위와 같이 추가
  • Visual Studio 2015 기준으로 경로를 지정하였기 때문에 다른 버전인 경우, VSPATH 환경 변수 수정
  • 위의 배치 파일은 사전 세팅이기 때문에 실행 후, nmake 커맨드를 직접 입력해줘야 함(echo로 출력된 부분 참고)
  • 또 다른 배치 파일 샘플 참고(OpenSSL_Install 다운로드) : https://blog.minivet.kr/?p=269


sample.mk : windows의 make 파일

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
.SUFFIXES : .c
 
MAKEFILE = ssl_minivet.mk
 
SOURCE1 = ssl_server.c
SOURCE2 = ssl_client.c
SOURCE3 = ssl_pem.c
 
MAKE = nmake -f $(MAKEFILE)
CC = cl.exe
CFLAGS = /Ox
CFLAGS2 = /MD
 
TARGET1 = ssl_server
TARGET2 = ssl_client
TARGET3 = ssl_pem
 
$(TARGET1):
    ECHO "------------------------------------"
    ECHO [Complie] Make $(TARGET1)
    $(CC) $(SOURCE1) $(CFLAGS) $(CFLAGS2)
    ECHO [OK] Make $(TARGET1)
    ECHO "------------------------------------"
 
$(TARGET2):
    ECHO "------------------------------------"
    ECHO [Complie] Make $(TARGET2)
    $(CC) $(SOURCE2) $(CFLAGS) $(CFLAGS2)
    ECHO [OK] Make $(TARGET2)
    ECHO "------------------------------------"
 
$(TARGET3):
    ECHO "------------------------------------"
    ECHO [Complie] Make $(TARGET3)
    $(CC) $(SOURCE3) $(CFLAGS) $(CFLAGS2)
    ECHO [OK] Make $(TARGET3)
    ECHO "------------------------------------"
 
clean:
    ECHO "------------------------------------"
    DEL $(TARGET1)
    DEL $(TARGET2)
    DEL $(TARGET3)
    ECHO "------------------------------------"
 
new:
    $(MAKE) clean
    $(MAKE)
 
all:
    $(MAKE) clean
    $(MAKE) $(TARGET1)
    $(MAKE) $(TARGET2)
    $(MAKE) $(TARGET3)
 
cs


※ 위의 샘플 파일들은 Windows Visual Studio 2015에서 OpenSSL 라이브러리를 사용하여 서버와 클라이언트를 컴파일하는데 사용했음