タグ

Makefileに関するdelegateのブックマーク (13)

  • Makefile で環境構築を確実に一瞬で終わらせる話

    はじめに ラブグラフ 開発チーム インターン の こるく です。 私がラブグラフに Join してまず感動したのが、コマンド一発で完了する超お手軽な環境構築でした。 普通プロジェクトJoin するときは面倒な環境構築をする必要がありますが、ラブグラフではそれが全くありませんでした。 ということで今回は、それを実現している Make と Docker を使って、開発、テスト、CI、番のすべての環境で、ランタイムの環境と環境変数の設定をすべてコードベース ( IaC というやつ? ) でラクに共有して開発体験を爆アゲしようと思います。 この構成が目指すところ ✅ 環境で悩むことをなくして開発体験を爆アゲする ✅ 環境構築をコマンド一発でできるようにする ✅ ついでにテストもコマンド一発でできるようにする ✅ 環境変数をホストマシンのシェルから排除し、コードの一部としてリポジトリ内で管理す

    Makefile で環境構築を確実に一瞬で終わらせる話
  • Go で使う Makefile の育て方

    Go を使ってプロダクトを作る時、Makefile を使ってビルドを指定することが多いです。 理由としては、 バージョン情報などを埋め込むのに都合がいい 複数のバイナリを吐き出す時に都合がいい Go のビルドオプションを指定するのにいろいろあって整理しておきたい 事前にコードジェネレータで書き出す部分があり、それを考えると Makefile などで整理したい などなどです。なので今回はプロジェクトが大きくなっていく中でどういう Makefile の書き方をしているか、というのをご紹介しようと思います。 サンプルとして、今回のプロジェクトでは gRPC を使ったチャットサービスのサーバーとクライアントを作ることにします。リポジトリは https://github.com/rosylilly/gochat に置いておきました。 Step 1. バージョン情報を埋める 今回はサーバーとクライアン

    Go で使う Makefile の育て方
  • Golang を使うなら Makefile を恐れるな - Frasco

    最近 Golang を使っています。開発中、私は go buildgo test を繰り返し手入力で実行するのに慣れてしまいました。これはついついやってしまう、私の悪い癖でした。引数がないようなシンプルなコマンドであれば、それほど辛くありません。しかし、タスクが複雑になってくれば、当然苦痛になってきます。逃げ道となりえる選択肢はほとんどありません。bash スクリプトは、あなたの仕事の役に立つでしょう。しかし、私としては makefile が役に立つと言いたいです。make ツールはこういった理由から生まれたものであり、 makefile には普段行う作業をまとめておくことができるからです。私は make の教祖になって、うまい書き方を教えたりすることはできませんが、今回の記事では、私のプロジェクトでよく使っている makefile をまとめておきました。では、やってみましょう。 #

    Golang を使うなら Makefile を恐れるな - Frasco
  • C/C++中規模プロジェクトのための超シンプルなMakefile | POSTD

    私は多くの小規模プロジェクトで Make を使ってきましたが、より大きな規模のプロジェクトになると、それは非常にうんざりするようなものでした。最近までは、自分のビルドシステムに行いたいことが4つあったのですが、Makeでの方法が分かりませんでした。 out-of-sourceビルド(オブジェクトファイルが、ソースとは分離されたディレクトリにダンプ出力されます) 自動生成される(かつ正確!)ヘッダの依存関係 オブジェクト/ソースファイルのリストの自動的な決定 インクルードディレクトリのフラグの自動生成 以下にこれらの全てを行える、C、C++、およびアセンブリで動作するシンプルなMakefileを紹介します。 MAKEFILE TARGET_EXEC ?= a.out BUILD_DIR ?= ./build SRC_DIRS ?= ./src SRCS := $(shell find $(S

    C/C++中規模プロジェクトのための超シンプルなMakefile | POSTD
  • LinuxカーネルのMakefileを解析する その6

    に注目します。これが、これから降りていこうとするトップ階層のディレクトリ達です。 さらに700行目付近に以下のように書いてあります。 core-y        += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ vmlinux-dirs    := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \ $(core-y) $(core-m) $(drivers-y) $(drivers-m) \ $(net-y) $(net-m) $(libs-y) $(libs-m))) vmlinux-alldirs    := $(sort $(vmlinux-dirs) $(patsubst %/,%,$(filter %/, \ $(init-n) $(init-) \ $(core-n) $(cor

  • LinuxカーネルのMakefileを解析する その2

    前回は、LinuxのトップのMakefile の一番外のネスト ifeq ($(skip-makefile),) について説明しました。 その内部にさらにわかりにくい部分があります。 トップのMakefile の400行目付近からは以下のようなコードになっています。

  • KMC Staff Blog:Makefileの依存関係の記述を自動化する簡単な方法

    2013年02月08日 Makefileの依存関係の記述を自動化する簡単な方法 ビルドにmakeコマンドを使うときにはMakefileにファイルの依存関係を書いておく必要があります。 しかし、開発の途中でインクルードするヘッダファイルが増えてくると、これらの依存関係を手作業で記述するのは面倒です。(そして、これをサボったことでハマることもよくあることです。:) ここでは、gccの機能を使ってこれを自動化する方法を紹介します。 gccのプリプロセッサで依存関係を自動生成する gccでコンパイルするときに -MD というオプションをつけると、コンパイルとともに拡張子が.dのファイルが作成されます。これはMakefileと同じ書式でそのファイルの依存関係が記述されています。 詳しくはgccのマニュアルを参照してください。 http://gcc.gnu.org/onlinedocs/gcc-4.7

  • Makefileの(おそらく正しい)書き方講座 | youtalk.jp

    LinuxMacを使っていて,C++Texのコンパイルをするときにいちいち直接g++やplatexコマンドでコンパイルするのは効率が良いとはいけません.C++はリンクするライブラリを長ったらしく記述しなくてはいけないし,Texは2回コンパイルしなくては図表番号の索引が出来ないなどの煩わしい作業が伴うからです. そこで,コンパイルの手順を記したMakefileを書こうという話になります.しかし,Makefileの記述方法は一歩間違うと,あまり作業が楽にはなりません.ファイル間の依存関係をいちいち直接記述しなくてはいけないからです.私の研究室の友達,後輩もこのMakefileの記述方法に四苦八苦しています. この問題を解決する私なりのMakefileの一例を以下に示してみます. ポイントは,g++の-MM -MGオプションと,Makefileの中でlsを呼ぶことで,ディレクトリ内の関連ファ

  • コマンド「make」初心者向けメモ(Hishidama's make-command Memo)

    「目的のファイル」と「ソースファイル群」のファイルの日付を比べて、「ソースファイル」の方が新しければ、「生成方法」に書かれた内容が実行される。 某antでは「makefileの文法を覚えるのが面倒」なんて言ってるけど、こっちの方がよほどすっきりしているような気がするけどなー。 1つのファイルから1つのファイルを生成する例 makefile: a.out: test.c gcc -O test.c -o a.out これにより、test.cがa.outより新しいか、もしくはa.outが存在しない場合に「gcc -O test.c -o a.out」が実行されてa.outが出来る。 2つのファイルから1つのファイルを生成する例 makefile: all: a.out ←最終的に生成したいファイル a.out: main.o sub.o ←a.outを作るのに直接必要なファイル gcc mai

  • makefileの入門者用解説ページ

    makefileの入門者用解説ページ makefileの入門者用解説ページです 後半では、汎用的なmakefileの例もありますので、参考にどうぞ ■makefileって何? ■一番簡単な例 ■一番短いmakefile ■サブディレクトリの処理 ■依存関係を自動作成 ■makefileを自動作成 ■makefileの汎用例 ■makefileって何? makefileはプログラムをコンパイル&リンクするのを自動化してくれるツールです。 これがないと、複数ファイルをコンパイルするとき、 プログラマがどのファイルを変更したかを覚えておいて、それらのファイルに対してコンパイルし、最後にリンクする 全ファイルをコンパイル&リンクする のどちらかを行うことになります。 前者では管理が大変ですし、後者ではファイルが多い場合、やたらとコンパイル&リンクに時間がかかって、時間の無駄に

  • Make チュートリアル

    Make というツールは多くのプログラマが利用しているでしょう。 動作原理自体は単純で、 目的のファイルと依存関係にあるファイルとの更新時刻を比較して、 必要なら再実行すべき処理を行なう、というものです。 しかしメイクファイルには「推論規則」や 「(内部的に定義済みの)暗黙のルール」といったものがあり、 これらを多用されると初心者にはちょっとわかりにくいものになる場合があります。 そういう私もこういったルールを知らずに使っていたことがあり、 いざというときに苦労した覚えがあります。 そこで、これを機会にチュートリアルとしてまとめておくことにしました。 なお、ここで使用した Make は GNU Make version 3.80 です。 Make の基 マクロ ターゲット指定と疑似ターゲット 推論規則と拡張子 暗黙のルール ファイルのインクルードとメイクファイルの階層化 【参考文献】 「

  • GNU make 日本語訳(Coop編) - 目次

    著者 :リチャード・M・ストールマン, ローランド・マグラス (GNU プロジェクト) 訳者 : いのまた みつひろ / ecoop.net(技術メモ公開中) 翻訳文更新日:May 20, 2002(翻訳終了・未校正) Linux 標準搭載の make コマンド, 別名 gmake の日語版です。 この資料の著作権は Richard.M.Stallman & Roland.McGrath と Free Software Foundation にあり、また翻訳版には前述の著作者に加えて ecoop.net に著作権があります。再配布・転載等される方はこちらを見て下さい。 GNU Project についてはgnu.org(日語)を参照のこと。 序文はこちら GNU makeユーティリティは大きいプログラムのどの断片が再コンパイルされる必要が あるかという事と,それらを再コンパイルする発行コ

  • Makefile でのヘッダファイルの依存関係を自動的に解決する - ritcheyの日記

    Makefile でヘッダファイルの依存関係を書くのは結構面倒である。以前は X に付属の makedepend コマンドを使って行うのが普通だったが、便利な方法がないか調べてみた。 GNU make のマニュアルに、まさに依存関係を自動生成する方法そのものがかかれていた。 4.14 Generating Prerequisites Automatically に詳しい説明がある。make の info の日語訳が GNU make 日語訳(Coop編) - ルールの記述 があるが、ここにかかれている Makefile のルールそのままでは動作しなかった。英語の原文の方のルールにしないと動作しない。単に引用符の対応関係がとれていないだけ。 以下のようにすればよい。Makefile 全体を乗せておく。 生成された *.d を include する。ただし、一番最初は *.d は存在しない

    Makefile でのヘッダファイルの依存関係を自動的に解決する - ritcheyの日記
  • 1