Utiliser le compilateur

Une fois que vous avez procédé à l'installation du compilateur vous aurez un binaire crystal à disposition.

Dans les sections qui suivent un signe ($) indique le prompt de la ligne de commande.

Compilation et exécution en même temps

Pour compiler et exécuter un programme d'un coup vous pouvez invoquer crystal avec un unique fichier:

$ crystal some_program.cr

Les fichiers Crystal ont .cr comme extension.

Vous pouvez également utiliser la commande run:

$ crystal run some_program.cr

Création d'un exécutable

Pour créer un exécutable, utilisez la commande build:

$ crystal build some_program.cr

Cela a pour effet de créer un fichier some_program que vous pouvez exécuter:

$ ./some_program

Note: Par défaut les exécutables générés ne sont pas complétement optimisés. Pour activer les optimisations, utilisez le drapeau --release:

$ crystal build some_program.cr --release

Assurez-vous de toujours utiliser --release pour des exécutables à distribuer ou lorsque vous faites des tests de performance.

Les performances sans les optimisations disponibles sont plus qu'acceptables avec un temps de compilation rapide, vous pouvez donc exécuter la commande crystal comme si c'était un interpréteur.

Création d'un projet ou d'une librairie

Utilisez la commande init pour créer un projet Crystal avec la structure de dossier standard.

$ crystal init lib my_cool_lib
      create  my_cool_lib/.gitignore
      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/

Autres commandes et options

Pour voir une liste complète des commandes disponibles, invoquez crystal sans argument

$ crystal
Usage: crystal [command] [switches] [program file] [--] [arguments]

Command:
    init                     generate a new project
    build                    build an executable
    deps                     install project dependencies
    docs                     generate documentation
    env                      print Crystal environment information
    eval                     eval code from args or standard input
    play                     starts crystal playground server
    run (default)            compile and run program
    spec                     compile and run specs (in spec directory)
    tool                     run a tool
    help, --help, -h         show this help
    version, --version, -v   show version

Pour voir toutes les options disponibles pour une commande en particulier, utilisez --help après la commande:

$ crystal build --help
Usage: crystal build [options] [programfile] [--] [arguments]

Options:
    --cross-compile                  cross-compile
    -d, --debug                      Add symbolic debug info
    -D FLAG, --define FLAG           Define a compile-time flag
    --emit [asm|llvm-bc|llvm-ir|obj] Comma separated list of types of output for the compiler to emit
    -f text|json, --format text|json Output format text (default) or json
    -h, --help                       Show this message
    --ll                             Dump ll to .crystal directory
    --link-flags FLAGS               Additional flags to pass to the linker
    --mcpu CPU                       Target specific cpu type
    --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
    --single-module                  Generate a single LLVM module
    --threads                        Maximum number of threads to use
    --target TRIPLE                  Target triple
    --verbose                        Display executed commands

results matching ""

    No results matching ""