文章目录
  1. 1. 执行一次编译和运行
  2. 2. 创建一个可执行文件
  3. 3. 创建一个项目或库
  4. 4. 其它的指令和参数

执行一次编译和运行

要编译和运行Crystal程序, 可以在crystal指令后面跟程序文件名

1
$ crystal some_program.cr

crystal程序文件以.cr结尾 。
也可以带上run命令来执行

1
$ crystal run some_program.cr

创建一个可执行文件

使用build命令来创建

1
$ crystal build some_program.cr

这样就创建了一个 some_program的可执行文件 ,可以这样调用

1
$ ./some_program

注意: 这样创建的可执行程序还没有最优化,要创建优化的程序需要带上 –release参数

1
$ crystal build some_program.cr --release

请确保正式释放版本 或者跑Benchmark时都带上 –release参数。
默认不带–release的原因在于,在没有优化编译的情况下能加快编译的速度 这样你就可以把crystal命令行当成程序解释器来玩耍。
注:有个icr的项目 ,可以提供crystal语言的命令行交互环境。

创建一个项目或库

使用 init命令可以创建一个带有标准目录结构的Crystal项目

1
2
3
4
5
6
7
8
9
10
11
12
$ crystal init lib my_cool_lib
create my_cool_lib/.gitignore
create my_cool_lib/.editorconfig
create my_cool_lib/LICENSE
create my_cool_lib/README.md
create my_cool_lib/.travis.yml
create my_cool_lib/shard.yml
create my_cool_lib/src/my_cool_lib.cr
create my_cool_lib/src/my_cool_lib/version.cr
create my_cool_lib/spec/spec_helper.cr
create my_cool_lib/spec/my_cool_lib_spec.cr
Initialized empty Git repository in ~/my_cool_lib/.git/

其它的指令和参数

可以使用不带任何参数的crystal指令来查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ crystal
Usage: crystal [command] [switches] [program file] [--] [arguments]

Command:
init # 生成一个新项目
build # 创建一个可执行文件
deps # 安装项目依赖
docs # 生成文档
env # 打印Crystal的环境信息
eval # 从标准输入或参数中运行Crystal代码
play # 启动Crystal的Playground服务
run (默认) # 构建并运行项目
spec # 创建并运行 specs (在spec目录)
tool run a tool
help, --help, -h # 显示帮助
version, --version, -v # 显示版本号

要查看具体命令的参数, 可以在指令后面跟上 –help参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$ crystal build --help
Usage: crystal build [options] [programfile] [--] [arguments]

Options:
--cross-compile # 交叉编译
-d, --debug # Add full symbolic debug info
--no-debug # 不输出Debug信息
-D FLAG, --define FLAG # 定义一个编译时 flag
--emit [asm|llvm-bc|llvm-ir|obj] # 输出编译器信息,多个类别可以使用逗号分隔
-f text|json, --format text|json # 格式化输出 text(默认) 或json
--error-trace # 显示所有错误追踪信息
-h, --help # Show this message
--ll # Dump ll to Crystal's cache directory
--link-flags FLAGS # Additional flags to pass to the linker,-static表示静态链接
--mcpu CPU # 指定Cpu类型
--mattr CPU # Target specific features
--no-color # Disable colored output
--no-codegen # Don't do code generation
-o # 指定编译输出的文件名(Output filename )
--prelude # Use given file as prelude
--release # 以正式发行版的模式编译(Compile in release mode )
-s, --stats # Enable statistics output
-p, --progress # Enable progress output
-t, --time # Enable execution time output
--single-module # Generate a single LLVM module
--threads # 限制使用的最大线程数(Maximum number of threads to use )
--target TRIPLE # Target triple
--verbose # Display executed commands
--static # Link statically
--stdin-filename # Source file name to be read from STDIN

文章目录
  1. 1. 执行一次编译和运行
  2. 2. 创建一个可执行文件
  3. 3. 创建一个项目或库
  4. 4. 其它的指令和参数