Nim

발행: (2026년 2월 9일 오후 04:31 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

구성 파일

# ~/.config/nim/config.nims
import std/[strutils, strformat]

switch("nimcache", fmt"{getCurrentDir()}/nimcache/{projectName()}/{CompileTime.toHex}")
switch("colors", "on")
# switch("usenimcache")  # 设置后无法正常使用testament
# switch("backend", "c")  # 设置后 cc, cpp, js 命令失效

컴파일 명령

# 编译 main.nim
nim c main.nim

# 编译并运行 main.nim
nim r main.nim
nim c -r main.nim

# 编译项目入口
nim c -o:"$projectname" --outdir:"$nimcache" ./src/project.nim

Nim 명령 구문

nim command [options] [projectfile] [arguments]

주요 명령

명령설명
c (compile)컴파일
r컴파일 및 실행
doc문서 생성
cc (compileToC)C 로 컴파일
cpp (compileToCpp)C++ 로 컴파일
jsJavaScript 로 컴파일
-r / --run컴파일된 프로그램 실행
-d:SYMBOL / --define:SYMBOL컴파일러 심볼 설정

공통 심볼

  • -d:release – 릴리스 모드
  • -d:testing – 테스트 모드
  • -d:ssl – SSL 활성화

일반 옵션

옵션설명
--app:console|gui|lib|staticlib컴파일 프로그램 유형: 콘솔, GUI, 동적 라이브러리, 정적 라이브러리
-p:PATH / --path:PATH검색 경로 추가
--backend:c|cpp|js|objc컴파일 백엔드 설정
--noMain:on|offproc main 생성 안 함
--nimMainPrefix:PREFIX다중 백엔드 통합 시 초기화 함수 접두사 설정, PREFIXNimMain() 형식으로
-o:FILE / --out:FILE출력 파일 이름 설정
--outdir:DIR출력 파일 위치 설정 (-o 사용 후 적용)
--usenimcacheoutdir을 자동으로 nimcache 로 설정 (-o 사용 시 무효)
--nimcache:PATHnimcache 디렉터리 설정
--mm:orc|arc|refc|markAndSweep|boehm|go|none|regions메모리 관리 방식 설정
--deepcopy:on|offarc, orc 모드에서 system.deepCopy 사용 허용
--threads:on|off멀티스레드 사용 여부
--colors:on|off컬러 출력 여부
--stackTrace:on|off스택 트레이스 활성화 여부
--lineTrace:on|off라인 트레이스 활성화 여부
--debuginfo:on|off디버그 정보 출력 여부
--passC:OPTIONC 컴파일러에 옵션 전달
--passL:OPTION링커에 옵션 전달
-c / --compileOnly:on|off컴파일만 수행, 어셈블 및 링크 안 함
--noLinking:on|off컴파일 및 어셈블만 수행, 링크 안 함
--putenv:key=value환경 변수 설정
-w:on|off|list / --warnings:on|off|list경고 출력 여부
--warning:X:on|off특정 경고 X 출력 여부 (Xall 가능)
--warningAsError:X:on|off경고 X를 오류로 처리
--skipCfg:on|offNim 설치 디렉터리의 설정 파일을 읽지 않음
--skipUserCfg:on|off사용자 설정 파일 ~/.config/nim/config.nims를 읽지 않음
--skipProjCfg:on|off프로젝트 설정 파일을 읽지 않음

Nimble

명령설명
nimble init PROJECTNim 프로젝트 초기화
nimble install [DEPENDENCE]Nim 의존성 설치
nimble uninstall DEPENDENCENim 의존성 삭제 (다른 의존성의 의존성일 경우 삭제 불가)
nimble list전역 설치된 의존성 확인
nimble list -i / --installed로컬 설치된 의존성 확인
nimble deps의존성 정보를 트리 구조로 표시
nimble deps --format:jsonJSON 구조로 의존성 표시
nimble test.nimble에 설정된 테스트 실행
nimble build기본 설정 또는 $projectdir/config.nims에 따라 빌드
testament p "tests/test.nim"지정된 테스트 파일 실행

Testament

discard """
  action: "run"
  targets: "c"
  cmd: "nim r -d:testing $file"
"""

사용법

testament command [projectfile] [options]

옵션

옵션설명
p PATTERN, pat PATTERN, pattern PATTERN테스트 경로가 PATTERN과 일치하는 파일
alltests/category 아래 모든 .nim 파일 테스트
r SINGLE, run SINGLEtests/category 아래 단일 파일 SINGLE(.nim) 테스트
--targets:c|cpp|js|objc컴파일 백엔드 설정
--colors:on|off컬러 출력 여부

예시 명령

# 단일 파일 테스트
testament p "tests/test.nim"

# 와일드카드 테스트
testament p "tests/*.nim"

# 단일 테스트 실행
testament r "example.nim"

기본 테스트 호출

nim $target --hints:on -d:testing --nimblePath:build/deps/pkgs $options $file
  • $targetc, cpp, js, objc 중 하나이며, 공백으로 구분하여 여러 백엔드를 지정할 수 있음
  • matrix는 테스트 시 여러 -d:SYMBOL을 전달하기 위해 사용되며, 세미콜론으로 구분합니다. 예: ; -d:release; -d:caseFoo -d:release
Back to Blog

관련 글

더 보기 »

HTDICS — HTML 사전

GitHub Copilot CLI 챌린지 제출 이것은 GitHub Copilot CLI 챌린지에 대한 제출물입니다 https://dev.to/challenges/github-2026-01-21. 제가 만든 것 HTDI...