タグ

makefileに関するymm1xのブックマーク (17)

  • また make の話してる(2020年9月14日) - なにもわからない

    私の大好きな Makefile の話が盛り上がっていたのでまとめました。 「やめてね。」って方はお声がけください。 同じ会社にいるけど、真逆の感想を持っている。Makefile読まないと副作用が分からないし、Rakefile/package.jsonだけで済むのに無駄に1つレイヤ増えていて、Makefileできたときからいる人は楽だけど、途中から入った人にとっては学習コストが高い。 https://t.co/EXtmI3xl72— 神速 (@sinsoku_listy) 2020年9月13日 golangでMakefileを使うのは分かる。 ただ、RubyやNode.jsのリポジトリなら $ git clone xxx $ cd xxx $ bundle install && rake もしくは npm install && npm test で環境構築ができることを期待する。— 神速 (

    また make の話してる(2020年9月14日) - なにもわからない
  • make の -C オプションについて

    makefile を読み込むなどの動作の前に、ディレクトリ dir に移動する。 (中略) このオプションは通常、make を再帰的に呼び出すときに使われる。 と書いてあります。 ほとんどの場面で 「make -C dir」は「cd dir; make」と同じと考えていいと思うが、 わずかに挙動が違う部分があることに最近気づいた。 実験のため、次のような /home/foo/Makefile, /home/foo/bar/Makefile という2つの Makefile を用意。 /home/foo/Makefileの内容: all: @ echo CURDIR = $(CURDIR) @ echo PWD = $(PWD) @ cd bar; $(MAKE) /home/foo/bar/Makefileの内容: all: @ echo CURDIR = $(CURDIR) @ echo

  • [開発]GNU makeのMakefileに、シェルスクリプトを自然に書くたった一つの方法 - ヒルズで働く@robarioの技ログ

    たった一つとか嘘です。 ググッても中々出てこなくて、ちょっといじってたらできちゃったので書き残しておきます。 GNU makeでは1行毎に1つのシェルで実行されるので、 foo:: if true ; then echo "make love" ; fi は foo:: $(SHELL) -c 'if true ; then echo "make love" ; fi' と同じような挙動になります。 よってシェルスクリプトが複数行に渡る場合、 foo:: if true then echo "make love" fi なんて書いてしまうと、 foo:: $(SHELL) -c 'if true' $(SHELL) -c 'then' $(SHELL) -c ' echo "make love"' $(SHELL) -c 'fi' という感じで実行されることになるので当然エラーになります。

    [開発]GNU makeのMakefileに、シェルスクリプトを自然に書くたった一つの方法 - ヒルズで働く@robarioの技ログ
  • Go言語開発を便利にするMakefileの書き方 - Qiita

    Go言語開発での makeコマンド と Makefile Go言語の開発ではmakeコマンドをタスク自動化ツールとしてよく使います。 よく使うコマンド、自動化したいタスクをMakefileに記述しておくと、開発に使う複雑なコマンドをすぐに実行したり、チームで共有出来ます。 Makefileに対して、難しいイメージを持っているかもしれませんが、超基のMakefileの書き方はとてもシンプルなものです。 この記事の目的 Makefileの超基がわかる Go言語開発のタスク自動化ツールとしてのMakefileの書き方がわかる 前提知識 シェルスクリプト についての知識 書き始める前の準備 EditorConfigを設定して、タブ / スペース によるインデントのトラブルに会わないようにしましょう。 公式サイトにあなたのエディタが、EditorConfigをサポートしているか、プラグインの追加

    Go言語開発を便利にするMakefileの書き方 - Qiita
  • マークダウンベースのタスクランナー saku を作った話 - Qiita

    tl;dr make をタスクランナーとして使うことに疲れた (.PHONY ってもう書きたくない) yaml ベースのタスクランナーは幾つかあったがしっくり来ない (go-task / robo) そもそもタスクの記述言語をマークダウンにした方が良いのでは? マークダウンベースのタスクランナーを作った! saku! (update: Go言語バージョンも作った!) モチベーション 自分は普段、趣味仕事もほとんど JavaScript ばかり書いているため、タスクランナーとしては npm run-script を使っています。 run-script はタスクのドキュメントが書けないとか、タスクにコメントをつけれないとか(JSON の文法の制約上)、不満点は色々ありますが、npm-run-all などの支援ツールを利用することで、必要最低限のタスク定義は十分にできるツールと個人的には思って

    マークダウンベースのタスクランナー saku を作った話 - Qiita
    ymm1x
    ymm1x 2018/01/31
    タスク書いたらそのままドキュメントにもなるのはいいな
  • Make覚書 - Qiita

    make覚書 最近makeを使うことになったので、make関する覚書を作成しています。 環境 私の作業場所で扱う計算機が下記の様に異なりますが、 特に区別せずに作業しています、ご了承ください。 Debian8 bash GNU Make 4.0 macOS-X bash GNU Make 3.81 make makeはMakefileにルールを記述しておき、煩雑なコンパイル作業等を自動化するコマンドです。 一連の作業の中で変更の無いファイルに対してコンパイルを飛ばしたりしてくれるので便利です。 基的なルール Makefileはターゲット(target)、必須項目(prereq)、コマンド(comands)から成り、 必須項目のファイルがターゲットよりも新しい場合にコマンドが実行されます。 ちなみにインデントはTABでないと駄目です。

    Make覚書 - Qiita
  • Makefileの関数 - Qiita

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

    Makefileの関数 - Qiita
  • Makefileを自己文書化する | POSTD

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

    Makefileを自己文書化する | POSTD
  • makeコマンドのちょっとしたtips - 組み込みの人。

    知っている人には当たり前。でも新人さんには覚えておいて欲しい。 コンパイルエラーがあっても止まらずにコンパイルできるところまでコンパイルする $ make -k 普通にオプション無しでmakeコマンドをたたくとビルドが無事終了するか、エラーが発生したところで止まります。ひとつひとつエラーを取り除いていってもいいのですが、いったいどのくらいのエラーがあるのかを見極めるために、 -k オプションをつけてビルドを実行します。そうするとコンパイルエラーがあっても止まらずにコンパイルできるところまでコンパイルしてくれます。数個のエラーなのか、何百のエラーなのかで次の作業をどうするかを作戦を立てていきます。たくさんエラーがあっても同じ原因であることもあるし。(例えば何かヘッダファイルが見つからないなど。) あまりにたくさんのエラーがあるなら、もっと違ったアプローチをすることも考えらます。 とりあえずビ

    makeコマンドのちょっとしたtips - 組み込みの人。
  • Makefile ことはじめ - Qiita

    Makefile について理解が足りてないのでメモ Ruby の C 拡張をいじるに当たって、避けて通れないので、ここいらで把握する make って何? make(メイク) は、プログラムのビルド作業を自動化するツール。 コンパイル、リンク、インストール等のルールを記述したテキストファイル (Makefile) に従って、これらの作業を自動的に行う。 複雑に関連し合ったファイルの依存関係を解決するのが make の長所である。

    Makefile ことはじめ - Qiita
  • How to abort makefile if variable not set?

    ymm1x
    ymm1x 2017/03/01
    未定義変数のチェック(手動)
  • How to treat a warning as an error in a Makefile? - Stack Overflow

    ymm1x
    ymm1x 2017/03/01
    ハック的な方法をしないと未定義変数にアクセスしたときエラーで終了というようなことは出来ない模様
  • make の ifdef はわかりにくい

    シェルにおいて $ FOO= とすると、シェル変数 FOO は空ではあるが、定義はされている。 変数 FOO を未定義にするには $ unset FOO としなければならない。 つまり、シェルスクリプトで、「変数が空」であることと、「変数が未定義」であることは明確に違う。 一方、make においてはこのあたりが紛らわしいというか、非常にわかりにくいと思うので、整理しておきたい。 make には ifdef という構文があるが、これの挙動を見てみる。 (実験1) 以下の内容の Makefile を用意する。 FOO= all: ifdef @echo FOO is defined. else @echo FOO is NOT defined. endif 実行すると以下のようになる。 $ make FOO is NOT defined. FOO= のように、空文字を代入した場合、 ifdef

  • makeでシェルの結果を利用する - ksaitoの日記

    makeでログファイルや実行結果を保存する場合、タイムスタンプを付けたファイルやディレクトリを使いたいことがあります。 単純にdateコマンドで作成したタイムスタンプをTSという変数に入れてみます。 $ cat Makefile TS=`date +%Y%m%d%H%M%S` all: echo ${TS} sleep 2 echo ${TS} $この方法だとdateコマンドの結果ではなくコマンドシーケンス全体がTSに格納されるため1秒以上かかる処理があるとタイムスタンプがずれてしまいます。 $ make echo `date +%Y%m%d%H%M%S` 20100205005347 sleep 2 echo `date +%Y%m%d%H%M%S` 20100205005349 $こういう場合、$(shell コマンド)という形式を利用するとコマンドの実行結果が文字列として格納できます

    makeでシェルの結果を利用する - ksaitoの日記
  • gnu makeの変数を全てダンプする - karasuyamatenguの日記

    hoge=foo print-vars: @$(foreach v,$(.VARIABLES),$(info $v=$($v))) foreachで.VARIABLESが持つ全ての変数名をinfoで出力する。$($v)は$vという名の変数の値の参照だな。これだと環境変数やdefault,automatic変数も出力してしまう。これらを排除して「普通の変数」をは下のリンクを参照。 出力 $ make print-vars | sort %D= # 訳のわからんものが色々ある… %F= *D= *F= +D= +F= .DEFAULT_GOAL=all # defaultターゲットをallじゃなくすこともできるようだ。 ... @F=print-vars # 現ターゲットか。 AR=ar ARFLAGS=rv AS=as CC=cc CHECKOUT,v=+co print-vars CO=c

    gnu makeの変数を全てダンプする - karasuyamatenguの日記
  • 2016年だけどMakefileを使ってみる - Qiita

    この資料はなに? Makeの良さを伝えるものです CとかC++の持ち物じゃない 普段使うコマンドのショートカットみたいな 2016年でもMakefileは便利 頑張らないでScala 〜VOYAGE GROUPにおけるアドネットワーク開発の戦略〜 // Speaker Deck Makeってなに?Makefile??? make(メイク)は、プログラムのビルド作業を自動化するツール。コンパイル、リンク、インストール等のルールを記述したテキストファイル (makefile) に従って、これらの作業を自動的に行う。 出典:https://ja.wikipedia.org/wiki/Make つまり、自動化のためのツール。 make が生成するのはふつう C のプログラムだが、べつに C のプログラムに限らず、Makefile に書く生成コマンドの書きように よっては、TeX のファイルだろうが

    2016年だけどMakefileを使ってみる - Qiita
  • Makefileで遊ぼう 〜 階乗, フィボナッチ数, Brainfuck処理系まで - プログラムモグモグ

    しばしば見落とされがちですが, Makefileは立派な(=チューリング完全な)プログラミング言語です. GNU Make, 3rd Edition([1], 以降makeと記します)をパラパラしながら読み終わりました. 最後の最後で, Makefileの中で「数字の計算をする方法」が書いてあり, あ, こりゃ, 僕がやるしか無いな, と思ってこのエントリーを書きました. GNU Make 第3版 作者:Robert Mecklenburg発売日: 2005/12/01メディア: 大型事項 Makefileの基事項です. と言っても, 暗黙のルールとかマニアックな特殊ターゲットとかは今の僕にはあまり興味が無いです. まず, Makefileをビシビシ書くにあたって, デバッグのために簡単に出力する方法を知って置かなければなりません. warning関数を使います. make1

    Makefileで遊ぼう 〜 階乗, フィボナッチ数, Brainfuck処理系まで - プログラムモグモグ
  • 1