์ด๊ฒ์ Ubuntu Online, Fedora Online, Windows ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ ๋๋ MAC OS ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์จ๋ผ์ธ ์ํฌ์คํ ์ด์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ OnWorks ๋ฌด๋ฃ ํธ์คํ ์ ๊ณต์ ์ฒด์์ ์คํํ ์ ์๋ ๋ช ๋ น imake์ ๋๋ค.
ํ๋ก๊ทธ๋จ:
์ด๋ฆ
imake - make ์ ํธ๋ฆฌํฐ์ ๋ํ C ์ ์ฒ๋ฆฌ๊ธฐ ์ธํฐํ์ด์ค
๊ฐ์
์ธ์ [ -D๋ฐํ๋ค ] [ -IDIR ] [ -U๋ฐํ๋ค ] [ -T์ด ํ ํ๋ฆฟ ] [ -f ํ์ผ ์ด๋ฆ ] [ -C ํ์ผ ์ด๋ฆ ] [
-s ํ์ผ ์ด๋ฆ ] [ -e ] [ -v ]
๊ธฐ์
์ด๋ง์ผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค ๋ฉ์ดํฌ ํ์ผ ํ ํ๋ฆฟ์์ CPP ๋งคํฌ๋ก ๊ธฐ๋ฅ ๋ฐ
๋ผ๋ ๋๋ ํ ๋ฆฌ๋ณ ์ ๋ ฅ ํ์ผ ์์ด๋ฉ์ดํฌํ์ผ. ์ด๋ฅผ ํตํด ๋จธ์ ์ข ์์ฑ์ด ํ์ฉ๋ฉ๋๋ค(์:
์ปดํ์ผ๋ฌ ์ต์ , ๋์ฒด ๋ช ๋ น ์ด๋ฆ ๋ฐ ํน์ ํ์ธ ๊ท์น) ๋ณ๋๋ก ๋ณด๊ด
๊ฑด์ค๋ ๋ค์ํ ์์ดํ ์ ์ค๋ช ์์.
์ต์
๋ค์ ๋ช ๋ น์ค ์ต์ ์ ์ธ์:
-D๋ฐํ๋ค
์ด ์ต์ ์ CPP. ์ผ๋ฐ์ ์ผ๋ก ๋๋ ํ ๋ฆฌ๋ฅผ ์ค์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
ํน์ ๋ณ์. ์๋ฅผ ๋ค์ด X Window System์ ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ํฑ๋๋ฅด
ํต์ฌ ๋ฐฐํฌํ์ ์ต์์๋ฅผ ํฌํจํ๋ ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ์ผ๋ก
์ปค๋๋ฅด ์์์ ์๋์ ์ธ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ.
-I์๋ฐฐ ๊ท์น์
์ด ์ต์ ์ CPP. ์ผ๋ฐ์ ์ผ๋ก ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋๋ ํ ๋ฆฌ ์ธ์ ํ ํ๋ฆฟ ๋ฐ ๊ตฌ์ฑ ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค.
-U๋ฐํ๋ค
์ด ์ต์ ์ CPP. ์ผ๋ฐ์ ์ผ๋ก ๋ณ์๋ฅผ ์ค์ ํด์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋๋ฒ๊น ํ ๋ ์ธ์ ๊ตฌ์ฑ ํ์ผ.
-T์ด ํ ํ๋ฆฟ
์ด ์ต์ ์ ๋ง์คํฐ ํ ํ๋ฆฟ ํ์ผ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค(์ผ๋ฐ์ ์ผ๋ก
๋ก ์ง์ ๋ ๋๋ ํ ๋ฆฌ์ ์์น -I)์ ์ํด ์ฌ์ฉ CPP. ๊ธฐ๋ณธ๊ฐ์
Imake.tmpl.
-f ํ์ผ ์ด๋ฆ
์ด ์ต์ ์ ๋๋ ํ ๋ฆฌ๋ณ ์ ๋ ฅ ํ์ผ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์
์์ด๋ฉ์ดํฌํ์ผ.
-C ํ์ผ ์ด๋ฆ
์ด ์ต์ ์ ํ์ฌ ์์ฑ๋ .c ํ์ผ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
์๋ฐฐ ๊ท์น์. ๊ธฐ๋ณธ๊ฐ์ ์์ด๋ฉ์ดํฌํ์ผ.c.
-s ํ์ผ ์ด๋ฆ
์ด ์ต์ ์ ํ์ธ ์ค๋ช ํ์ผ์ด ์์ฑ๋์ง๋ง
ํ์ธ ํธ์ถํด์๋ ์๋ฉ๋๋ค. ๋ง์ฝ ํ์ผ ์ด๋ฆ ๋์(-)๋ ์ถ๋ ฅ์ด ์์ฑ๋ฉ๋๋ค.
์ ํ์ค ์ถ๋ ฅ. ๊ธฐ๋ณธ๊ฐ์ ์์ฑํ์ง๋ง ์คํํ์ง ์๋ ๊ฒ์ ๋๋ค. Makefile.
-e ์ด ์ต์ ์ ๋ค์์ ๋ํ๋ ๋๋ค. ์ธ์ ์์ฑ๋ ์คํํด์ผ Makefile. ๊ทธ๋งํผ
๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉ์์๊ฒ ๋งก๊ธฐ๋ ๊ฒ์ ๋๋ค.
-v ์ด ์ต์ ์ ๋ค์์ ๋ํ๋ ๋๋ค. ์ธ์ ์ธ์ํด์ผ CPP ๋ช ๋ น์ค
์์ฑํ๋ ๋ฐ ์ฌ์ฉ Makefile.
์ฃผ๋ฌธ ์ ์ IT WORKS
์ด๋ง์ผ ํธ์ถ CPP ์ด๋ค ๊ฒ๊ณผ -I or -D ๋ช ๋ น์ค์์ ํ๋๊ทธ๋ฅผ ์ ๋ฌํ๊ณ ์ด๋ฆ์ ์ ๋ฌํฉ๋๋ค.
๋ค์ 3์ค์ ํฌํจํ๋ ํ์ผ:
#define IMAKE_TEMPLATE "Imake.tmpl"
#define INCLUDE_IMAKEFILE
#IMAKE_TEMPLATE ํฌํจ
์ด๋์ Imake.tmpl ๊ณผ ์์ด๋ฉ์ดํฌํ์ผ ์ ์ํด ์ฌ์ ์๋ ์ ์์ต๋๋ค. -T ๊ณผ -f ๋ช ๋ น ์ต์ ,
๊ฐ๊ฐ.
IMAKE_TEMPLATE๋ ์ผ๋ฐ์ ์ผ๋ก ์์คํ ์ข ์ ๋งค๊ฐ๋ณ์๊ฐ ํฌํจ๋ ํ์ผ์ ์ฝ์ต๋๋ค.
(๋ก ์ง์ CPP ๊ธฐํธ), ์ฌ์ดํธ๋ณ ๋งค๊ฐ๋ณ์ ํ์ผ, ๋ณ์๋ฅผ ์ ์ํ๋ ํ์ผ,
ํฌํจํ๋ ํ์ผ CPP ์์ฑ์ ์ํ ๋งคํฌ๋ก ํจ์ ํ์ธ ๊ท์น, ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์์ด๋ฉ์ดํฌํ์ผ
(INCLUDE_IMAKEFILE์ ์ํด ์ง์ ๋จ) ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์์ต๋๋ค. NS ์์ด๋ฉ์ดํฌํ์ผ ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉ
๊ตฌ์ถ๋์ด์ผ ํ๋ ๋์์ ๋ํ๋ด๋ ๊ธฐ๋ฅ; ์ธ์ ์์ฑ์ ์ฒ๋ฆฌํฉ๋๋ค.
์ ์ ํ ๊ท์น.
์ด๋ง์ผ ๊ตฌ์ฑ ํ์ผ์๋ ๋ ๊ฐ์ง ์ ํ์ ๋ณ์, imake ๋ณ์ ๋ฐ make๊ฐ ํฌํจ๋ฉ๋๋ค.
๋ณ์. imake ๋ณ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ cpp์ ์ํด ํด์๋ฉ๋๋ค. ์ธ์ ์คํ๋ฉ๋๋ค. ๊ด๋ก์ ๋ฐ๋ผ
๊ทธ๋ค์ ํผํฉ ์ผ์ด์ค์ ๋๋ค. make ๋ณ์๋ Makefile ๋์ค์
์ ์ํ ํด์ ํ๋ค. ๊ด๋ก์ make ๋ณ์๋ ๋๋ฌธ์์ ๋๋ค.
๊ท์น ํ์ผ(์ผ๋ฐ์ ์ผ๋ก Imake.๊ท์น ๊ตฌ์ฑ ๋๋ ํ ๋ฆฌ์ ์์)
๋ค์ํ CPP ํ์ฌ ํ๋ซํผ์ ๋ฐ๋ผ ๊ตฌ์ฑ๋ ๋งคํฌ๋ก ๊ธฐ๋ฅ.
์ด๋ง์ผ ๋งคํฌ๋ก๋ฅผ ํ์ฉํ๊ธฐ ์ํด ๋ฌธ์์ด ``@@''์ ๋ชจ๋ ํญ๋ชฉ์ ๊ฐํ์ผ๋ก ๋์ฒดํฉ๋๋ค.
ํ๋ ์ด์์ ๋ผ์ธ ์์ฑ ํ์ธ ๊ท์น. ์๋ฅผ ๋ค์ด ๋งคํฌ๋ก
#define program_target(ํ๋ก๊ทธ๋จ, objlist) @@\
ํ๋ก๊ทธ๋จ: objlist @@\
$(CC) -o $@ ๊ฐ์ฒด ๋ชฉ๋ก $(LDFLAGS)
๋ก ํธ์ถ๋ ๋ program_target(ํธ, foo1.o foo2.o) ํ์ฅ๋ฉ๋๋ค
foo: foo1.o foo2.o
$(CC) -o $@ foo1.o foo2.o $(LDFLAGS)
์ด๋ง์ผ ๋ํ ๋จ์ด ``XCOMM''์ ๋ฌธ์ ``#''๋ก ๋์ฒดํฉ๋๋ค.
``invalid ์ง์๋ฌธ'' ์ค๋ฅ๋ฅผ ์ผ์ผํค์ง ์๊ณ Makefile์ ์ฃผ์์ ๋ฃ๋ ๊ฒ์ ํ์ฉํฉ๋๋ค.
์ ์ฒ๋ฆฌ๊ธฐ.
์ผ๋ถ ๋ณต์กํ ์ธ์ ๋งคํฌ๋ก ์์ฑ ํ์ ํ์ธ ๊ฐ ํธ์ถ์ ๋ก์ปฌ ๋ณ์
๋งคํฌ๋ก์ ๊ฐ์ด ๋งคํฌ๋ก์ ์ ๋ฌ๋ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฐ
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ธ์ ํํ์ ๋ณ์ XVARdefn์ด๋๋ก n ํ๋
ํ ์๋ฆฌ. ๋ ํนํ ํ์ธ ๋ณ์๊ฐ ๋์ฒด๋ฉ๋๋ค. ์ดํ์ ์ฌ๊ฑด
๋ณ์ XVAR์ฌ์ฉn ํด๋นํ๋ ๋ณ์์ ์ํด ์์ฑ๋ ๋ณ์๋ก ๋์ฒด๋ฉ๋๋ค. XVARdefn.
๋ค์์ ์์คํ ์์ CPP ์ฌ๋ฌ ํญ๊ณผ ๊ณต๋ฐฑ์ ๋จ์ผ ๊ณต๋ฐฑ์ผ๋ก ์ค์ ๋๋ค. ์ธ์ ~ํ๋ ค๊ณ ์๋ํ๋ค
ํ์ํ ํญ์ ๋ค์ ๋์ผ์ญ์์ค(ํ์ธ ํญ๊ณผ ํญ์ ์ฐจ์ด์ ๋ํด ๋งค์ฐ ๊น๋ค๋กญ์ต๋๋ค.
๊ณต๋ฐฑ). ์ด๋ฌํ ์ด์ ๋ก ๋ช ๋ น์ค์ ์ฝ๋ก (:) ์์๋ ๋ฐฑ์ฌ๋์๊ฐ ์์ด์ผ ํฉ๋๋ค.
(\).
์ฌ์ฉ ์ธ์ดํ๊ฐ๋๊ฐ L' X ์ฐฝ ์์คํ
์ฌ์ฉ๋ X ์๋์ฐ ์์คํ ์ธ์ X11R6.9 ๋ฆด๋ฆฌ์ค๊น์ง ๊ด๋ฒ์ํ๊ฒ
์์ค ํธ๋ฆฌ ๋ฐ ์ธ๋ถ ์ํํธ์จ์ด ๋ด์์ ๋น๋ํฉ๋๋ค. X๋ ์ดํ GNU autoconf๋ก ์ด๋ํ์ต๋๋ค.
X11R7.0 ๋ฐ ์ดํ ๋ฆด๋ฆฌ์ค์ ๋น๋ ์์คํ ์ ๋ํ automake์ด์ง๋ง ์ฌ์ ํ imake๋ฅผ ์ ์งํฉ๋๋ค.
์์ง ๋ณํ๋์ง ์์ ๊ธฐ์กด ์ธ๋ถ ์ํํธ์จ์ด ํ๋ก๊ทธ๋จ์ ๋น๋ํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
์์์ ์ธ๊ธํ๋ฏ์ด ๋ ๊ฐ์ง ํน์ ๋ณ์, ํฑ๋๋ฅด ๊ณผ ์ปค๋๋ฅด, ์ฐธ์กฐํ๋๋ก ์ค์ ๋์ด ์์ต๋๋ค.
์๋ ๊ฒฝ๋ก ์ด๋ฆ์ ์ฌ์ฉํ๋ ํ์ผ์ด ๋ ์ฝ์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ๋ช ๋ น์ด ์์ฑ๋ฉ๋๋ค.
์๋์ผ๋ก ๋น๋ Makefile ๋๋ ํ ๋ฆฌ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ/X/ (์๋จ์ ๋นํด
์ถ์ฒ):
% ../.././config/imake -I../.././config \
-DTOPDIR=../../. -DCURDIR=./lib/X
์์ค ํธ๋ฆฌ ์ธ๋ถ์์ X ํ๋ก๊ทธ๋จ์ ๋น๋ํ ๋ ํน์ ๊ธฐํธ ์ฌ์ฉ์ค์น๋จ ์ ์ ๋จ
๊ณผ ํฑ๋๋ฅด ๊ณผ ์ปค๋๋ฅด ์๋ต๋ฉ๋๋ค. ๊ตฌ์ฑ ํ์ผ์ด ์ ๋๋ก
์ค์น, ์คํฌ๋ฆฝํธ xmkmf(1)์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ๋ ฅ ํ์ผ
๋ค์์ ์ฝ์ ํ์ผ์ ์์ฝ์ ๋๋ค. ์ธ์ X์์ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ ๋ค์ฌ์ฐ๊ธฐ๋ ๋ฌด์์ ๋ณด์ฌ์ค๋๋ค
ํ์ผ์๋ ๋ค๋ฅธ ํ์ผ์ด ํฌํจ๋ฉ๋๋ค.
Imake.tmpl ์ ๋ค๋ฆญ ๋ณ์
site.def ์ฌ์ดํธ๋ณ, BeforeVendorCF ์ ์
*.cf ์์คํ ๋ณ
*Lib.rules ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ท์น
site.def ์ฌ์ดํธ๋ณ, AfterVendorCF ์ ์
Imake.rules ๊ท์น
Project.tmpl X ์ ์ฉ ๋ณ์
*Lib.tmpl ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ณ์
์์ด๋ฉ์ดํฌํ์ผ
Library.tmpl ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ท์น
Server.tmpl ์๋ฒ ๊ท์น
Threads.tmpl ๋ค์ค ์ค๋ ๋ ๊ท์น
์ฐธ๊ณ ์ฌ์ดํธ.def ์ ์ ํ ๋ฒ, ๋ ๋ฒ ํฌํจ๋ฉ๋๋ค *.cf ํ์ผ ๋ฐ ํ ๋ฒ.
๋๋ถ๋ถ์ ์ฌ์ดํธ ์ฌ์ฉ์ ์ง์ ์ *.cf ํ์ผ, ๋ค์๊ณผ ๊ฐ์ ์ผ๋ถ
์ปดํ์ผ๋ฌ ์ ํ์ ๋ค๋ฅธ ๋ณ์ ์ค์ ์ด
๊ทธ๋ค์๊ฒ ์์กดํ์ญ์์ค.
์ฒ์ ์ฌ์ดํธ.def ํฌํจ๋๊ณ ๋ณ์ BeforeVendorCF๊ฐ ์ ์๋๊ณ
๋ ๋ฒ์งธ๋ก AfterVendorCF ๋ณ์๊ฐ ์ ์๋ฉ๋๋ค. ๋ชจ๋ ์ฝ๋ ์ฌ์ดํธ.def ์์ ์์ด์ผ
์ด๋ฌํ ๊ธฐํธ ์ค ํ๋์ ๋ํ #ifdef.
onworks.net ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ imake ์จ๋ผ์ธ ์ฌ์ฉ