Post

리눅스 파일 설치과정 / Makefile 작성 / 윈도우에서 make하기. nmake

1) source code

2) ./configure [옵션] (생략) 옵션에 따라 Makefile 생성

이 때 configure 파일은 source code 제작자가 마음대로 만든 shell script이기 때문에 옵션 설명을 읽어봐야함.

3) make Makefile에 나와있는 source code간의 관계, 필요한 컴파일러 등을 참고해서

컴파일 한다.

4) make install 적당한 디렉토리로 파일을 이동시키거나, make 결과인 설치파일을 실행 한다.

빌드 스크립트 자동으로 만들어주는 패키지들.

1
2
apt-get install autoconf, automake, libtool, autoscan

Makefile 작성법

1
2
make -p

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
target: dependencies
command
e.g.,
sum.o: sum.h sum.cpp
g++ -c -o sum.o sum.cpp

  

main.o: sum.h main.cpp
g++ -c -o main.o main.cpp

  

sum\_test: sum.o main.o
g++ -o sum\_test main.o sum.o

  

clean:
rm -f \*.o

Makefile의 공백은 모두 tab 문자여야 함!!! vim에서 자동으로 스페이스로 변환해서 들어가는 경우가 있는데, 다음 에러가 발생한다.

1
2
Makefile:4: \*\*\* missing separator.  Stop.

이럴 때는 :set noexpandtab

자주 쓰는 Makefile
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
CC       := g++
## CFLAGS   := -g

  

OBJECTS := $(patsubst %cpp,%o,$(wildcard src/\*.cpp)) $(patsubst %c,%o,$(wildcard src/\*.c))
HEADERS := $(wildcard src/\*.h)

  

LDLIBS   := -lnetfilter\_queue
TARGET  := nfq\_test

  

$(TARGET): $(OBJECTS)

$(CC) -o $(TARGET) $(OBJECTS) $(LDLIBS)

  

%.o: %.cpp $(HEADERS)

$(CC) $(CFLAGS) -c -o $@ $<

  

.PHONY: clean new
clean:

rm -f $(OBJECTS) $(TARGET)

  

new:

$(MAKE) clean

$(MAKE)

윈도우에서 make하기. => nmake

VS 2017용 x64 네이티브 도구 명령 프롬프트

x86 Native Tools Command Prompt for VS 2017

를 실행하고, 프롬프트 뜨면 Makefile 있는 곳으로 경로 이동해서 nmake 치면 된다. x86으로 빌드할거냐, x64으로 빌드할거냐 신경써야 함.

This post is licensed under CC BY 4.0 by the author.