Eto: .net core 2.0 ๋ฐ๋ชจ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Œ

์— ๋งŒ๋“  2019๋…„ 02์›” 23์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: picoe/Eto

์•ˆ๋…•ํ•˜์„ธ์š” @cwensley
์ตœ์‹  ๋งˆ์Šคํ„ฐ(๋ฐ Net Core 2.2๊ฐ€ ํฌํ•จ๋œ VS2017.9) ์‚ฌ์šฉ.

๋ฐฉ๊ธˆ ์ปดํŒŒ์ผํ•˜๊ณ  netcoreapp2.0 ํ…Œ์ŠคํŠธ ํด๋”๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. https://i.imgur.com/rWR7hj1.png
์‹คํ–‰ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ๋‹ค์Œ์„ ์–ป์Šต๋‹ˆ๋‹ค. https://i.imgur.com/CkLyiCk.png
์–ด๋–ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๊นŒ? Net461 ๋ฆด๋ฆฌ์Šค ํ…Œ์ŠคํŠธ ๋ฐ๋ชจ๋Š” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

net461\Eto.Test.Gtk3.exe - ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
a) ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(gtk-sharp, gio-sharp, ...)๋ฅผ ๋Œ€์ƒ ๋ฐ”์ด๋„ˆ๋ฆฌ ํด๋”์— ๋ณต์‚ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
b) ์ €์žฅ์†Œ์— ์ „ํ˜€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” libgtk-win32-3.0-0.dll์„ ๋ณต์‚ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์™œ?? ์˜ฌ๋ฐ”๋ฅธ dll์„ ์–ด๋””์„œ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?)

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@pablocar80 src/

ํ˜„์žฌ Eto.Gtk ํ”Œ๋žซํผ์€ .NET Core๋ฅผ ์ง€์›ํ•˜๋Š” ์œ ์ผํ•œ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. .NET Core 3.0์ด ์ถœ์‹œ๋  ๋•Œ Eto.Wpf ๋ฐ Eto.WinForms์— ๋Œ€ํ•œ .NET Core์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฑฐ์˜ ๋™์‹œ์— Eto.Mac64์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  6 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” @Krakean ,

์–ด๋–ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๊นŒ?

Windows์šฉ GTK+ 3์„ ์„ค์น˜ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜๋ ค๋ฉด gtk+ ์„ค์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— Windows์—์„œ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ Eto.WinForms ๋˜๋Š” Eto.Wpf ๋Œ€์‹  Eto.Wpf๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ ์ข…์†์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

macOS์—์„œ๋Š” ์„ฑ๊ณต์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด homebrew ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GTK+3์„ ์„ค์น˜ํ–ˆ์ง€๋งŒ ์ฃผ๋กœ Mac64 ๋˜๋Š” XamMac2 ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

GTK+๊ฐ€ ์„ค์น˜๋œ ๋ชจ๋“  Linux์—์„œ๋Š” .net ์ฝ”์–ด ๋˜๋Š” ๋ชจ๋…ธ์—์„œ๋งŒ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. mkbundle์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ .net ํ•ต์‹ฌ ์•ฑ์„ ๊ฒŒ์‹œํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Eto.Test.Gtk3.exe์˜ ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฐํฌํŒ์—์„œ ์ผ๋ฐ˜์ ์ด๊ณ  ๋ชจ๋…ธ์—์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” gtk-sharp3 ํŒจํ‚ค์ง€๋กœ๋งŒ Linux์—์„œ ์ž‘๋™ํ•˜๋„๋ก ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ gtk-sharp3 ํŒจํ‚ค์ง€๊ฐ€ ์ ๊ทน์ ์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๊ณ  ์ˆ˜๋…„๊ฐ„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

@Krakean ๋‚ด ์ œ์•ˆ์„ ์‹œ๋„ ํ–ˆ์Šต๋‹ˆ๊นŒ?

@cwensley ์ผ์ข…์˜.

Windows์šฉ GTK+ 3์„ ์„ค์น˜ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜๋ ค๋ฉด gtk+ ์„ค์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ repo์— ํ‘œ์‹œ๋˜์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์ปดํŒŒ์ผํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Eto.Test.Gtk3.exe์˜ ๊ฒฝ์šฐ gtk-sharp3 ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋Š” Linux์—์„œ๋งŒ ์ž‘๋™ํ•˜๋„๋ก ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์Šฌํ”ˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ํŠนํžˆ Windows์˜ Gtk3์— ๊ด€์‹ฌ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค :-\
Gtk๊ฐ€ ๋” ์ž˜ ์–‘์‹ํ™”๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— :) Wpf/Winforms๋ณด๋‹ค ์กฐ๊ธˆ ๋” ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์‚ฌ์šฉ์ž ์ •์˜ Windows ํ…Œ๋งˆ๊ฐ€ ์„ค์น˜๋œ ๊ฒฝ์šฐ. ๊ทธ๋Ÿฌ๋‚˜ Gtk ์„ฑ๋Šฅ์€ Wpf๋ณด๋‹ค ์ƒ๋‹นํžˆ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์ด ์ ์—์„œ Gtk3๊ฐ€ Gtk2๋ณด๋‹ค ๋‚˜์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@ํฌ๋ผ์ผ„ ,

ํ•„์š”ํ•œ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ repo์— ํ‘œ์‹œ๋˜์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์ปดํŒŒ์ผํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๊ทธ๊ฒƒ์€ ์ข‹์„ ์ˆ˜ ์žˆ์ง€๋งŒ Eto.Forms๋Š” OS์™€ ์ผ์น˜ํ•˜๋Š” ํ”Œ๋žซํผ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์ถ•๋˜์–ด ์ด๋Ÿฌํ•œ ๊ฑฐ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ธฐ๋ณธ ํˆดํ‚ท์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ฐ OS์—์„œ ์•ฑ์ด ๋” ๋ณด๊ธฐ ์ข‹๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Windows์˜ Gtk+3์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋งค์šฐ ๋ชป์ƒ๊ฒผ๊ณ  ๊ธฐ๋ณธ Windows ์•ฑ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ €๋Š” ํŠนํžˆ Windows์˜ Gtk3์— ๊ด€์‹ฌ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

"Gtk" ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜์—ฌ "Gtk3" ํ”Œ๋žซํผ์„ ๋Œ€์ฒดํ•˜๊ณ  Gtk+3 ์ด์ƒ์„ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

Eto.Gtk2 -> gtk-sharp2 ํ•„์š”(Windows, Mac ๋ฐ Linux์šฉ ํŒจํ‚ค์ง€ ํฌํ•จ)
Eto.Gtk3 -> gtk-sharp3๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ Linux์—์„œ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
Eto.Gtk -> ๋Š” gtk-sharp ์ž์ฒด ์‚ฌ๋ณธ ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฏ€๋กœ Gtk+3๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Gtk+3์—๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ •๋ณด๊ฐ€ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ž…๋ ฅํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@Krakean @cwensley ์–ธ๊ธ‰ํ•˜์‹  .NET Core ๋ฐ๋ชจ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@pablocar80 src/

ํ˜„์žฌ Eto.Gtk ํ”Œ๋žซํผ์€ .NET Core๋ฅผ ์ง€์›ํ•˜๋Š” ์œ ์ผํ•œ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. .NET Core 3.0์ด ์ถœ์‹œ๋  ๋•Œ Eto.Wpf ๋ฐ Eto.WinForms์— ๋Œ€ํ•œ .NET Core์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฑฐ์˜ ๋™์‹œ์— Eto.Mac64์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰