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++ 로 컴파일 |
js | JavaScript 로 컴파일 |
-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|off | proc main 생성 안 함 |
--nimMainPrefix:PREFIX | 다중 백엔드 통합 시 초기화 함수 접두사 설정, PREFIXNimMain() 형식으로 |
-o:FILE / --out:FILE | 출력 파일 이름 설정 |
--outdir:DIR | 출력 파일 위치 설정 (-o 사용 후 적용) |
--usenimcache | outdir을 자동으로 nimcache 로 설정 (-o 사용 시 무효) |
--nimcache:PATH | nimcache 디렉터리 설정 |
--mm:orc|arc|refc|markAndSweep|boehm|go|none|regions | 메모리 관리 방식 설정 |
--deepcopy:on|off | arc, orc 모드에서 system.deepCopy 사용 허용 |
--threads:on|off | 멀티스레드 사용 여부 |
--colors:on|off | 컬러 출력 여부 |
--stackTrace:on|off | 스택 트레이스 활성화 여부 |
--lineTrace:on|off | 라인 트레이스 활성화 여부 |
--debuginfo:on|off | 디버그 정보 출력 여부 |
--passC:OPTION | C 컴파일러에 옵션 전달 |
--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 출력 여부 (X는 all 가능) |
--warningAsError:X:on|off | 경고 X를 오류로 처리 |
--skipCfg:on|off | Nim 설치 디렉터리의 설정 파일을 읽지 않음 |
--skipUserCfg:on|off | 사용자 설정 파일 ~/.config/nim/config.nims를 읽지 않음 |
--skipProjCfg:on|off | 프로젝트 설정 파일을 읽지 않음 |
Nimble
| 명령 | 설명 |
|---|---|
nimble init PROJECT | Nim 프로젝트 초기화 |
nimble install [DEPENDENCE] | Nim 의존성 설치 |
nimble uninstall DEPENDENCE | Nim 의존성 삭제 (다른 의존성의 의존성일 경우 삭제 불가) |
nimble list | 전역 설치된 의존성 확인 |
nimble list -i / --installed | 로컬 설치된 의존성 확인 |
nimble deps | 의존성 정보를 트리 구조로 표시 |
nimble deps --format:json | JSON 구조로 의존성 표시 |
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과 일치하는 파일 |
all | tests/category 아래 모든 .nim 파일 테스트 |
r SINGLE, run SINGLE | tests/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
$target은c,cpp,js,objc중 하나이며, 공백으로 구분하여 여러 백엔드를 지정할 수 있음matrix는 테스트 시 여러-d:SYMBOL을 전달하기 위해 사용되며, 세미콜론으로 구분합니다. 예:; -d:release; -d:caseFoo -d:release