1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【C/C++】dockerでncurses.hを使う

Last updated at Posted at 2022-04-16

はじめに

docker上でncurses.hを使うための最低限の環境を構築します。
ローグライクゲームを作成したときにもこの環境で動作しました。

【C言語】ncursesでローグライクゲームづくりも併せてどうぞ

ncurses.hとは何なのか

ずばりC言語でより高度な画面制御ができるヘッダファイルです。
また、いちいち[Enter]Keyを押す必要をなくすことができたりと、C言語でCLIゲームを作るならば是非おすすめしたい。

なぜdockerを使うのか

結論を言うと環境差があるからです。

ncursesは別途インストールする必要があります。
macだと brew install ncursesですみますが、それ以外だと少し面倒です。

また、ゲーム等を制作し、他の人に遊んでもらう場合において
上記のような環境差によって予期せぬエラーやそもそもの心理的ハードルが高いことから、ゲームを遊んでもらうことはないでしょう。

そこでdockerによって環境を統一することによってユーザにはコンテナを作ってもらう。ただそれだけに注力させ、エラーなど考える必要をなくすことができます。

環境構成

OS : CentOS 7

installするもの

  • vim
  • make
  • ncurses-devel
  • Development Tools

今回使用するコンテナは一つですが、Docker composeで環境つくります。

1. vim

テキストエディタの一つです。
動作がはやいのでよく使ってます。

2. make

通常コンパイルするときは

cc hogehoge.c

としますが、

別途Makefileを記述すれば

make

でコンパイルできます。

3. ncurses-devel

今回の目玉です。これでncurses.hが使えます。

4. Development Tools

色々セットです。
gccやgitなどがインストールされます。

手順

1. 前準備

Dockerを使うためには「Docker for windows」や「Docker for mac」が必要になります。

ここでのインストールの説明は省略します。

2. ディレクトリ構成

C-gameというディレクトリを作成しそれを基準にして考えます。

C-game/
   ├ src/
   │   ├ Makefile
   │   └ main.c
   ├ Dockerfile
   └ docker-compose.yml

3. 各ファイルに記述

Dockerfile

FROM centos:7

WORKDIR /root

RUN yum -y update && \
        yum -y groupinstall "Development Tools" && \
        yum install -y vim make ncurses-devel

COPY src /root/

COPY src /root/
でC-game/src/がコンテナのroot/にコピーされます
ここでいうと、Makefileとmain.cがコピーされます

docker-compose.yml

version: "3.8"
services:
 cdev:
  build:
   context: .
   dockerfile: Dockerfile
  image: cdev
  container_name: cdev
  volumes:
   - type: bind
     source: .
     target: /cdev
  stdin_open: true
  tty: true
  working_dir: /cdev/src/

Makefile

hoge: main.c
        gcc -std=c99 -o hoge main.c -lncurses

-std=c99を忘れずに記述しましょう

3. 実行

docker-compose.ymlがディレクトリに移動します。

ビルドします。(docker imageが作成されます)

docker-compose build

docker-composeでエラーが発生する場合はdocker composeと打ち込んでください。

docker-compose up -d

コンテナが起動します。

docker exec -it cdev bash

でコンテナにアクセスできます。
そのコンテナ内で

make
cd ./hoge

で無事実行することができます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?