タグ

makeに関するcrafのブックマーク (43)

  • Makefileの書き方 - $ cat /var/log/shin

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

    Makefileの書き方 - $ cat /var/log/shin
    craf
    craf 2018/05/02
  • 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
    craf
    craf 2016/09/27
  • GNU Make 第3版 日本語版(オライリー)のPDF版電子書籍の無料ダウンロード【マニュアル代わりにどうぞ】: 組込みエンジニアの思うところ

    ファームウェアのビルドに欠かせないツールと言えば make ですね。なんだかんだ言って、make が使えると何かと便利です。現在、市販の make の書籍といえば GNU make 3.81 を対象とした下記のオライリーのがベストかなと思います。 このは、もちろん書店で買ってもいいですが、 PDF でなら GNU Free Document License に則り無料で公開されています。ちょっと場所がわかりづらいのでリンク先を貼っておきますね。オライリージャパンのサイトの中にありますよ。 公式マニュアルは英語ですし日語訳は情報が古い場合がありますので上記の PDFがオススメです。 GNU Make 第3版 PDFファイル はココ ここから下はアマゾンへのリンクです。レビューなどの参考までに。 GNU Make 第3版 -

    craf
    craf 2016/08/16
  • Makefileを自己文書化するハックを注入するスクリプト: inject-make-help - Islands in the byte stream

    Re: Makefileを自己文書化する make2help | おそらくはそれさえも平凡な日々 この主のコマンドのインストールを強制するのめんどうだし、自己文書化hackを注入&管理するコマンドのほうがうれしそう。 / “Makefileを自己文書化する `make2help` | おそらくはそれさえも平凡な日々” https://t.co/VDmjEkyevs— FUJI Goro (@__gfx__) June 13, 2016 ぼくもmakeはわりと使う方で、AndroidプロジェクトだろうとiOSプロジェクトだろうとよく使うコマンドセットをMakefileとして追加するのが大好きなんですが、self-documented Makefileは存在はしっていたもののセットアップが面倒でやっていませんでした。 じゃあ make2help はどうかというと、ただひとつのコマンドをインスト

    Makefileを自己文書化するハックを注入するスクリプト: inject-make-help - Islands in the byte stream
    craf
    craf 2016/06/13
  • Makefileを自己文書化する | POSTD

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

    Makefileを自己文書化する | POSTD
    craf
    craf 2016/03/29
  • C言語を使うならMakeを使おうよ - Qiita

    次の理由からいろいろとムズムズしてしまったので、Makeについて書くことにしました。 C言語 Advent Calendar 2015で2日分だけ空きがある。空きが埋まっていればめでたいし、空きがもっと多ければあきらめがつくが…^^;;; C言語でシンプルすぎるブロック崩しを書いた(C言語 Advent Calendar 2015 13日目)は、プログラムも記事も面白いのに、Makefileの書き方が好みではない make触ってみた(ドワンゴ Advent Calendar 2015 20日目) は参考になる情報が多い良記事だけど、結末が好みではない なお、ここで取り上げるMakeは、GNU Makeです。Mac OS Xでコマンドラインツールをインストールしたときや、Linuxでは、makeコマンドを実行すると、GNU Makeが呼び出されるはずです。 また、以下の記述ではMakeの基

    C言語を使うならMakeを使おうよ - Qiita
    craf
    craf 2015/12/23
  • Makefile: realpath function on windows for gnu toolchain (yagarto)

    craf
    craf 2015/10/07
    Windowsだと、絶対パスに realpath / abspath を適用すると不正な結果になる問題。
  • kati について - 兼雑記

    https://github.com/google/kati kati について、ドキュメント書こう…と思っていたのですがなかなか進まないので、とりあえず日語で書いてみることにしました。何書くかがあまり明確じゃないテーマなので、何書くか考えるのと英語考えるのを両方同時にやるのが少し大変で。 動機 kati は GNU make のクローンです。いずれ完全なコンパチになると嬉しいですが、なかなか難しいだろうと個人的には諦めています。用途に対して実用的ならば良いかなと。 動機としては、 Android platform のビルドシステムが、なかなかシュールな GNU make 黒魔術で構成されていて、 make が実際になんかしはじめるまでが遅かったので、そこを高速化したいというものでした。 ビルドシステムが遅いという時、まずだいたいヌルビルドとフルビルドの2点を考えます。ヌルビルドてのは生

    kati について - 兼雑記
  • 【翻訳】Web世代のデベロッパーのためのmake - MOL

    Original:Make for the Web Generation (2015-02-28)by Casper Beyer イントロ JavaScriptの普及に伴いビルドツールが盛んだ。人気なものをいくつか挙げれば、grunt、gulp、slush、broccoliやbrunchなどがあるが、結局、名前をつけただけにすぎない。 多かれ少なかれ、これらのツールはファイルコピーからzipファイル作成のようなシンプルなタスク処理でさえ、すべてプラグインに依存しているので、それらのタスクを実行するためにプラグインを必要とするだろう。 これらのツールは理想論的には大きな柔軟性をもたらすものとされているが、実際はUNIXのエコシステムをただ複製しているだけにすぎない。このために君のプロジェクトは早々に、大きな開発依存性のバンドルを持つことであろう、そして、やっているタスクは単なる普通のコピー、

    【翻訳】Web世代のデベロッパーのためのmake - MOL
    craf
    craf 2015/06/02
  • 最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    TypeScriptでは、コンパイルが必要です。プログラムをブラウザーとNode.jsの両方で使おうとすると、さらに加工が必要です。ミニファイだの文書も作るだのすると、ちょっとしたビルドプロセスとなるので手作業では辛くなります。 今更Makeでもないよなー、と思い、最近のビルドツールを試してみました。 内容: 流行りすたりが激しすぎる gulpを使ってみる:こんなサンプル gulpのビルドスクリプト タスクランナーってのはビルドツールとは違うのか? ビルドツールは進化したのか 参考資料: 例題のファイルとコマンドの一覧 ソースファイル 追加の話: gulp問題ひきずり:ウォッチがまたおバカ過ぎる 流行りすたりが激しすぎる 「確かGruntってツールがあったよな」と、インストールと使い方を調べていると、やたらにgulpって単語が目立つんですよね。Gruntのライバルの新興勢力らしいです。 「

    最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2015/05/11
  • Non-recursive make: include makefile segment in a loop

    craf
    craf 2015/04/22
    ループ内でincludeを呼びだす。
  • KMC Staff Blog:WindowsでGNU makeを実行するとファイルが消えてしまう現象と対策

    craf
    craf 2015/03/01
  • Makefile内で Windows と Mac と Linux 環境で分岐する

    前にも似たようなエントリで書いてるけど、Macを付け足しておかないと。 ifeq (\$(OS),Windows_NT) # for Windows ..... else UNAME = \${shell uname} ifeq (\$(UNAME),Linux) # for Linux ..... endif ifeq (\$(UNAME),Darwin) # for MacOSX ..... endif endif

    craf
    craf 2014/07/21
  • Big Sky :: 高速なビルドシステム「ninja」

    いままで「SCons とか gyp とか、なんで C++ のシステムに python 入れなあかんねん」とか「せっかく python 入れたのに windows でビルドするには cygwin 版が必要とかいい加減にしろ」とか色んな事があったのですが、ninja を使う事で悩みが解消するかもしれません。 Ninja, a small build system with a focus on speed Ninja is a small build system with a focus on speed. It differs from other build systems in two majo... http://martine.github.io/ninja/ 如何にも外国人ウケしそうなプロジェクト名です。 ninja は chromium ブラウザの開発者が現行のビルドシステムに

    Big Sky :: 高速なビルドシステム「ninja」
  • ビルドオートメーションツールGYPを使おう - Engine Trouble

    GYP (Generate Your Projects) をご存知でしょうか。その名の通り、GYP はビルドツールで、ウェブブラウザの ChromiumJavaScript Engine の V8、そして JavaScript の実行環境に V8 を採用している Node.js など様々なプロジェクトで採用されています。 GYP はオープンソースです。Google Code で公開されており、誰でも手に入れることができます。 GYP は C++ をはじめ、ビルドを必要とする C や Objective-C を使用したプロジェクトにおいて、ビルドオートメーションを実現するために役に立ちます。 ただ、CMake や SCons に比べまだまだユーザが少なく、ドキュメントも豊富ではありません。そこで今日は GYP について紹介します。 GYP ってどんなもの? 例えばあなたが、C++ で書

    craf
    craf 2014/01/05
  • 「ファイルの中身に依存しつつそのファイル自体を更新する」コマンドラインツールはビルドシステムと相性が悪い - NyaRuRuが地球にいたころ

    関数型プログラミングのメリットについて語られることはあっても,「ファイルの中身に依存しつつそのファイル自体を更新する」コマンドラインツールがビルドシステムと相性が悪い,みたいな話をする人はあんまりいないようなので書いてみた. Windows には signtool.exe というデジタル署名ツールがある.実行ファイル myapp.exeに署名したい場合は以下のようにする. signtool sign /a myapp.exe十分にシンプルなように見える.が,典型的なビルドシステムはこの処理がお気に召さない.試しに Chromium や node.js で使われているメタビルドシステムである Gyp で書いてみる. { 'targets': [ { 'target_name': 'myapp', 'type': 'executable', 'sources': [ 'main.cc', ],

    「ファイルの中身に依存しつつそのファイル自体を更新する」コマンドラインツールはビルドシステムと相性が悪い - NyaRuRuが地球にいたころ
    craf
    craf 2013/12/31
  • 週刊nmosh - IDEビルドの改善 / DSP言語 / CProcedureへの再入 - .mjtの日記復帰計画

    全然週刊じゃない... nmoshとmoshの乖離がけっこう大きくなってきてどうするか舵取りが難しい。個人的にはもうnmoshしか使っていないので、今後もpsyntaxやautotools + libtoolのコードベースを維持できるかにあまり自信が無いところ。 もっとも、autotoolsは未だに対応する価値のあるレガシーに分類されるので扱いが難しい。CMakeは特に日語圏でマイナーで、殆どのLinuxユーザはCMakeの使い方を知らない。ただ、autotoolsにちゃんと対応したScheme処理系もあまり多くないので微妙なところではある。(GuileとかGaucheが有るけど) 実行ファイル名をmoshにしておくと営業的に不利というのもある(Mobile shellの方と被っているため)。殆どのパッケージングシステムでは実行ファイル名が重複する場合の考察が無いので、moshという名前

    週刊nmosh - IDEビルドの改善 / DSP言語 / CProcedureへの再入 - .mjtの日記復帰計画
  • CMakeのCMAKE_EXPORT_COMPILE_COMMANDSオプション - .mjtの日記復帰計画

    CMakeのCMAKE_EXPORT_COMPILE_COMMANDSオプションがNinjaビルドにも対応した。 このオプションを有効にしてcmakeを実行すると、コンパイルのためのコマンドラインがJSON形式でエクスポートされる( compile_commands.json )。 たとえばnmoshのcmakeビルド上で cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .のようにしてオプションを有効にすると、 { "directory": "C:/build/nmosh.ninja.mingw32", "command": "C:\\MinGW32\\bin\\gcc.exe (略) -o CMakeFiles/gctesthuge_test.dir/extlibs/gc/tests/huge_test.c.obj -c c:\\repos\\mosh\

    CMakeのCMAKE_EXPORT_COMPILE_COMMANDSオプション - .mjtの日記復帰計画
  • プログラミング言語Makeの関数型フラグメント:まとめとサンプル - 檜山正幸のキマイラ飼育記 (はてなBlog)

    一時Makefileに凝っていました。Makefileの記述構文のなかに、「Lispに似た小さな関数型言語が埋め込まれているんだ」とか言ってましたよね。あれはまー、遊び半分なんだけど、このテの知識は、実際にMakefileを読み書きするときにも役にたちます。 過去のMakefile関係エントリーを読み返そうと思ったら、けっこう量があるし、紆余曲折があるんで、ここに整理してまとめておこうと思います。 内容: 参考資料 概念と用語 データ型 変数 関数 制御構造 画面出力と強制終了 ●参考資料 Makefileに関しては、次のエントリー群でゴタゴタと説明しています。 Makefileの書き方、その勘どころ Makefileの書き方:プログラミング言語Make プログラミング言語Make 補遺:引数付きの関数 Make 補遺の補遺:遊んでいるだけ Make言語で算術演算 <-- バカ! もっとも

    プログラミング言語Makeの関数型フラグメント:まとめとサンプル - 檜山正幸のキマイラ飼育記 (はてなBlog)
    craf
    craf 2013/08/26
  • Makeでビルドオプションによって出力ディレクトリを変える - wagavulinの日記

    前回はMakefileをヘッダファイルの依存関係に対応させてみた。そのMakefileは入力ファイル(ソース、ヘッダ)と出力ファイル(依存関係ファイル(.d)、オブジェクトファイル、実行ファイル)がすべて同じディレクトリにあることが前提となっていた。しかし、多くのプロジェクトではビルドオプションによってコンパイルオプションや機能を切り替えるようになっているだろう。そのような場合は、出力先ディレクトリも変わるようになっている方が良い。そこで今回はビルドオプションによる設定変更とサブディレクトリの対応を行ってみる。サンプルプロジェクト概要ソースツリー今回は以下のようなC++プログラムのソースツリーを想定する。なお、できあがる実行ファイルはhelloにする。 myapp/ +- Makefile +- src/ +- main.cpp +- image/ | +- converter.h | +

    craf
    craf 2013/08/13