XMake ์‚ฌ์šฉ๋ฒ•

XMake ์‚ฌ์šฉ๋ฒ• #

๐Ÿš€ XMake: Rust์˜ Cargo ๊ฐ™์€ C ๋นŒ๋“œ ์‹œ์Šคํ…œ ์‚ฌ์šฉ๋ฒ• #

XMake๋Š” C, C++ ํ”„๋กœ์ ํŠธ์—์„œ Cargo์ฒ˜๋Ÿผ ๊ฐ„ํŽธํ•œ ๋นŒ๋“œ + ์‹คํ–‰ + ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
Rust์—์„œ cargo build, cargo run์„ ์“ฐ๋“ฏ์ด, XMake์—์„œ๋Š” xmake, xmake run์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


1๏ธโƒฃ XMake ์„ค์น˜ #

๐Ÿ“Œ Linux/macOS

curl -fsSL https://xmake.io/shget.text | bash

๐Ÿ“Œ Windows
PowerShell์—์„œ ์‹คํ–‰:

iwr -useb https://xmake.io/psget.text | iex

๐Ÿ“Œ ๋˜๋Š” ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์‚ฌ์šฉ

  • macOS: brew install xmake
  • Linux: sudo apt install xmake (Ubuntu), sudo pacman -S xmake (Arch)
  • Windows: scoop install xmake ๋˜๋Š” choco install xmake

์„ค์น˜ ํ™•์ธ:

xmake --version

2๏ธโƒฃ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ #

๐Ÿ“Œ C ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

xmake create -l c myproject
cd myproject

๐Ÿ“Œ C++ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

xmake create -l c++ myproject
cd myproject

3๏ธโƒฃ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ #

์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ ํด๋”๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

myproject/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ main.c  # ๋ฉ”์ธ ์ฝ”๋“œ
โ”œโ”€โ”€ xmake.lua   # ๋นŒ๋“œ ์„ค์ • ํŒŒ์ผ (Cargo.toml ๊ฐ™์€ ์—ญํ• )

๐Ÿ‘‰ xmake.lua ํŒŒ์ผ์ด Cargo.toml ๊ฐ™์€ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.


4๏ธโƒฃ ๋นŒ๋“œ & ์‹คํ–‰ #

๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ

xmake

๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰

xmake run

๐Ÿ“Œ ๋””๋ฒ„๊ทธ ๋นŒ๋“œ

xmake f -m debug   # Debug ๋ชจ๋“œ ์„ค์ •
xmake              # ๋‹ค์‹œ ๋นŒ๋“œ
xmake run          # ์‹คํ–‰

๐Ÿ“Œ ๋ฆด๋ฆฌ์ฆˆ ๋นŒ๋“œ

xmake f -m release   # Release ๋ชจ๋“œ ์„ค์ •
xmake                # ๋นŒ๋“œ

5๏ธโƒฃ ์ฝ”๋“œ ์ˆ˜์ • (xmake.lua ์„ค์ •) #

๊ธฐ๋ณธ์ ์œผ๋กœ xmake.lua๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

add_rules("mode.debug", "mode.release")

target("myproject")
    set_kind("binary")
    add_files("src/*.c")
  • add_rules("mode.debug", "mode.release") โ†’ ๋””๋ฒ„๊ทธ & ๋ฆด๋ฆฌ์ฆˆ ๋ชจ๋“œ ์ง€์›
  • target("myproject") โ†’ ์‹คํ–‰ ํŒŒ์ผ ์ด๋ฆ„
  • set_kind("binary") โ†’ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋นŒ๋“œ
  • add_files("src/*.c") โ†’ src/ ํด๋” ์•ˆ์˜ .c ํŒŒ์ผ์„ ํฌํ•จ

๐Ÿ“Œ C++ ํ”„๋กœ์ ํŠธ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด?

target("myproject")
    set_kind("binary")
    set_languages("c++17")   -- C++17 ์„ค์ •
    add_files("src/*.cpp")

6๏ธโƒฃ ํŒจํ‚ค์ง€(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ๊ด€๋ฆฌ #

Rust์˜ Cargo์ฒ˜๋Ÿผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ“Œ ์˜ˆ์ œ: OpenSSL ์ถ”๊ฐ€

add_requires("openssl")
target("myproject")
    set_kind("binary")
    add_files("src/*.c")
    add_packages("openssl")

๐Ÿ“Œ ํŒจํ‚ค์ง€ ์„ค์น˜

xmake require --info openssl

๐Ÿ“Œ ํŒจํ‚ค์ง€ ๋ชฉ๋ก ๊ฒ€์ƒ‰

xmake repo --search zlib

7๏ธโƒฃ ๋””๋ฒ„๊น… #

๐Ÿ“Œ GDB/Lldb ๋””๋ฒ„๊น…

xmake run -d

๐Ÿ“Œ VScode์™€ ์—ฐ๋™

xmake project -k vsxmake

๐Ÿ“Œ CMake ํ”„๋กœ์ ํŠธ ๋ณ€ํ™˜

xmake project -k cmake

๐ŸŽฏ XMake ์‚ฌ์šฉ ์š”์•ฝ #

๊ธฐ๋Šฅ๋ช…๋ น์–ด
ํ”„๋กœ์ ํŠธ ์ƒ์„ฑxmake create -l c myproject
๋นŒ๋“œxmake
์‹คํ–‰xmake run
๋””๋ฒ„๊ทธ ์‹คํ–‰xmake run -d
๋ฆด๋ฆฌ์ฆˆ ๋นŒ๋“œxmake f -m release && xmake
CMake ํ”„๋กœ์ ํŠธ๋กœ ๋ณ€ํ™˜xmake project -k cmake
VSCode ํ”„๋กœ์ ํŠธ๋กœ ๋ณ€ํ™˜xmake project -k vsxmake
ํŒจํ‚ค์ง€ ์„ค์น˜xmake require --info <package>

๐Ÿš€ ๊ฒฐ๋ก : Cargo ๊ฐ™์€ XMake! #

โœ” ๋‹จ์ˆœํ•œ ๋ช…๋ น์–ด (xmake, xmake run)
โœ” C/C++ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ (add_requires("openssl"))
โœ” ๋””๋ฒ„๊น… (xmake run -d) & ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์ง€์›

๐Ÿ‘‰ Rust์˜ Cargo์ฒ˜๋Ÿผ ์‰ฝ๊ฒŒ C ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด XMake๊ฐ€ ์ตœ๊ณ ์˜ ์„ ํƒ!
ํ•„์š”ํ•œ ์ถ”๊ฐ€ ์„ค์ •์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”! ๐Ÿ˜Š