タグ

makefileに関するMonMonMonのブックマーク (14)

  • A Tutorial on Portable Makefiles

    In my first decade writing Makefiles, I developed the bad habit of liberally using GNU Make’s extensions. I didn’t know the line between GNU Make and the portable features guaranteed by POSIX. Usually it didn’t matter much, but it would become an annoyance when building on non-Linux systems, such as on the various BSDs. I’d have to specifically install GNU Make, then remember to invoke it (i.e. as

  • Makefileの代わりにnpm scripts+zxを使う - 詩と創作・思索のひろば

    そこそこの規模があるプロジェクトで実行すべきタスクを定義するとき、初手として Makefile を使いがち。 Pros make は事実上どんな環境にもあることを期待してよい シェルで実行されるコマンドをそのまま書ける タスクの依存関係が明示できる Cons make では positional arguments が使えない 少し複雑なことをしようとすると Makefile 専用の文法を覚える必要がある 現代では、ファイルベースのタスクの依存関係は make が発明されたころほどは必要ではない Docker とか Go とか Webpack がよしなにしてくれることが多い 例: docker compose のラッパー ちょっとしたコマンドのラッパーを書きたいことがある。Makefile を書きはじめたらすべてのエントリポイントを make にしたい。ということで、以下のような Make

    Makefileの代わりにnpm scripts+zxを使う - 詩と創作・思索のひろば
  • make を使いこなすためのメモ | まくまくいろいろノート

    make の種類あれこれ 一番よく使用されているのは GNU make ですが、いろいろな亜種があります。 System V make Stuart I. Feldman によって作成されたオリジナルの make です GNU make Linux の世界で一般的に使用されている make です Implemented by Richard Stallman and Roland McGrath. Development since Version 3.76 has been handled by Paul D. Smith. Microsoft 版 nmake Microsoft C コンパイラ ver. 6.0A に付属 Borland 版 make Borland Turbo C++ コンパイラ ver.2 に付属 参考: MAKE の達人 (1992) Makefile に記述する

  • Makefile の関数一覧

    Makefile の組み込み関数の一覧です。 公式のドキュメントを読みながら、関数の引数と使い方について備忘録としてまとめました。 Makefile での関数の書き方は $(関数名 引数,...) または ${関数名 引数,...} です。 文字列操作・検索の関数 subst 文字列の置換です。使い方は $(subst 置換前,置換後,対象) FILES := hoge.c hoge.h fuga.c fuga.h all: @echo $(subst hoge,piyo,$(FILES)) # => piyo.c piyo.h fuga.c fuga.h patsubst パターンマッチによる文字列の置換です。使い方は $(patsubst 置換前,置換後,対象) FILES := hoge.c hoge.h fuga.c fuga.h all: @echo $(patsubst %.c

    Makefile の関数一覧
  • ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き - - make の仕組みを理解する

    前述*1のように Makefile は非常に簡潔に記述できます.ただし,簡潔なMakefileを記述するためには make の仕組みを理解する必要があります. 結論から言うと, make は 簡潔な生成ルールのみを記述したMakefileから, 実際に必要となる詳細な生成ルールを自動的に生成します. 自動的に生成されたルールを確認するには $ make -p と "-p" オプションを付けて make を実行します. 以下, hoge.c から hoge を生成する場合 hoge.c と fuga.c から hoge を生成する場合 の二つの具体例を挙げて,説明します. 前準備 Makefile と hoge.c を用意します. Makefile all: hoge hoge.c int main() { return 0; } make -p の実行 $ make -p > log 大量

    ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き - - make の仕組みを理解する
  • Goでサーバー開発するときのMakefileを晒してみる - Qiita

    はじめに この記事は、Go3 Advent Calendar の4日目の記事です。 Goで開発する際にはテストの実行やlintの実施といった細々としたコマンドを Makefile にまとめることが多いと思います。 これにはコマンド入力の手間を省くのももちろんですが、チーム内でコマンド実行の方法を統一するという意味もあります。「手元でのテストはReadmeに書いてある通りに実行してね」と伝えるよりも、Makefileにまとまってる方が親切です。 ということで、何番煎じか分かりませんが今回は業務で使っている Makefile を晒してみたいと思います。 ちなみに主に以下のツールを利用しています。 パッケージ管理: dep 自動リロード: realize DB migration管理: goose setup: go get -u github.com/golang/dep/cmd/dep go

    Goでサーバー開発するときのMakefileを晒してみる - Qiita
  • Makefileの書き方 - $ cat /var/log/shin

    まえがき その昔、Makefileの書き方という非常にわかりやすいMakefileの入門ページがあったのですが、seiichirou氏の卒業(?)とともにページが消えてしまいました。 私も大変お世話になったページだった、というかこれからもお世話になりそうなので、そこでWebArchiveから引っ張りだしてきたものを、はてな記法で書き直したものがこの記事になります。 元々自分用に書き直したのですが、せっかくなので公開してみます。 なので、以下の著作はseiichirou氏に帰属します*1。 Makefileの書き方 はじめに ここでは、Makefileの中でもGNU makeにかぎって説明します。 makeって何? ソースファイルを分割して大規模なプログラムを作成していると、コマンドでコンパイルするのが面倒です。また、一部のソースファイルを書き換えただけなのに全部をコンパイルし直すのは時間の

    Makefileの書き方 - $ cat /var/log/shin
  • 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
  • Makefileを自己文書化する | POSTD

    私たちのプロジェクトではいつも、非常に長い Makefile を使用して、インストールやビルド、テスト、デプロイメントの処理を自動化しています。ターゲット名はほとんど標準化されていますが( make install 、 make deploy )、中には説明が必要なものもあります( make run-dev 、 make restart-api )。そして、詳細なmakeターゲットを追加するほど、それらの処理内容をテキスト形式で大量に記載しなければなりません。私たちのプロジェクトでは通常、このような文書を README ファイルに書いています。 しかしCLI(コマンドラインインタフェース)を用いる場合は、主に自己文書化ツールを使っています。 make と打つだけで、利用可能なコマンドとその説明が一覧表示されたら便利だと思いませんか? それを実現するのは、実はとても簡単です。まずは各ターゲッ

    Makefileを自己文書化する | POSTD
    MonMonMon
    MonMonMon 2016/03/28
    ターゲットのコメントからヘルプを作るHACK
  • Makefile の書き方 (C 言語) — WTOPIA v1.0 documentation

    makeってなに?¶ ソースファイルを分割して大規模なプログラムを作成していると, コマンドでコンパイルするのが面倒である. また, 一部のソースファイルを書き換えだけなのに全部をコンパイルし直すのは時間の無駄である. そんな問題を解決するのが make である. Makefile と呼ばれるテキストファイルに必要なファイルと各ファイルのコンパイルのコマンド, ファイル間の依存関係を記す. そして, “make” というコマンドを実行するだけで, 自動的にコマンドを実行してコンパイルしてくれる. これだけではスクリプトと大差がないのだが, make は Makefile に記された依存関係に基づいて更新されたファイルの内関連のあるものだけを更新することで, コンパイル時間を短くする. make は特定のプログラミング言語に依存したものではない. C 言語のソースファイルのコンパイルにも使え

  • Makefileの関数 - Qiita

    自分用にずっとまとめようと思って、下書き保存して温めていたMakefile関連です。 C++用のビルドからAndroid用のビルドまでMakefileを大活用しているが、 使う機会が少ないのでMakefileの関数はどうも慣れない&上手く活用できない。 そして毎回調べる。 ということで、 実用的なものから、今後使うことはないだろう的なものまで、 リファクタをする時のために調べた結果をまとめておきたい。 英語が読めない自分が英語のドキュメントを読んだりして、 自分なりの解釈でまとめたので誤りがありましたらごめんなさい。 一応、ドキュメントを見ながら全部載せしたつもり。 http://www.gnu.org/software/make/manual/ ちなみに、makeのバージョンは、

    Makefileの関数 - Qiita
  • Makefileの書き方 - Y's note

    GNU Make 第3版 作者:Robert MecklenburgオライリージャパンAmazon 利用するケース @yutakikuchi_です。 C/C++を書いた時に複数ファイルから実行ファイルを生成するときやライブラリをIncludeする場合コンパイルのオプションが複雑になります。複雑なオプションを毎回コマンドラインで入力するのではなく、Makefileというコンパイルのオプションルールを記載してmake/gmakeコマンドにて実行ファイルを生成すると便利です。今回はMakefileの簡単なルールについて紹介します。 Makefileの基ルール C++ソースのコンパイルにはg++を利用します。例えばhello.cppというファイルをコンパイルする場合は$ g++ hello.cpp -o helloと実行するとhelloという実行ファイルが生成されます。これをMakefil

    Makefileの書き方 - Y's note
  • Makeでヘッダファイルの依存関係に対応する - wagavulinの日記

    CやC++で書かれたプログラムをMakeを使ってビルドする、というのはUnix/Linuxではよく行われていることだが、ちゃんとしたMakefileを書くのは意外と難しい。例えば以下の3つのファイルからなるプログラムを考える。foo.h: 関数fooの宣言がある。foo.c: 関数fooの実装がある。main.c: 関数fooを呼び出す。 /* foo.h */ void foo(int a); /* foo.c */ #include "foo.h" #include void foo(int a){ printf("%d\n", a); } /* main.c */ #include "foo.h" int main(int argc, char **argv){ foo(10); return 0; } Makefileは例えば以下のように書ける。 PROG := myapp SR

  • 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