Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

./configure,makeの流れを作るアレ

More than 5 years have passed since last update.

autotools-process.png
Using Autotools - Gnome Developerより

C/C++でのちょっと大きい構成でのMakefileのコンパイル記述法めんどくさいですよね。
それを、簡単にかつ環境に合わせて生成してくれるAutoMake/Autotoolsというのツール群あるのですが、それもさらに複雑でめんどくさいです。

Automake以外にもCMakewafと言ったもう少し簡単なツールもあるのですが、どれもそこまで簡単ではないし、世の中の既にAutoMakeで作られているプロジェクトを改変する場合は避けて通れないので、これについてメモ程度に解説を残しておこうかなと思います。自分も毎度調べていて疲れてきたので。

ここでは、以下の2つの実際にあるであろうシチュエーションにわけて説明します。

  1. 自分でも結構手の込んだC/C++のプロジェクトを作ろうと思った時
  2. 他人の作ったプロジェクトで./configureがコケてしまう時

1. 自分で作る時

まず、重要な入力と出力を確認しておきましょう。ソースコード以外に、必要なのはMakefile.amというMakefileよりも簡単な定義文だけです。

そこから./configureが出来るようにするために、configureファイル自身の生成、それがMakefileを作成する時に用いるMakefile.inconfig.h.inを作成するのが目的です。これら以外のものは全て中間生成物です。

まとめると以下のようになります。

入力:

  • ソースコード(hello.h, hello.cc, main.cc)
  • Makefile.am
Makefile.am
bin_PROGRAMS = hello
hello_SOURCES = hello.cc hello.h main.cc

出力

  • configure
  • ./configureが参照するMakefile.inconfig.h.in

作成のフロー

作成のフローを解説しているサイトはたくさんあるので、自分は1工程ごとにcommitしたgitリポジトリを作ってみました。これのcommit履歴とREADMEを参照してください。

https://github.com/awakia/automake

使うコマンドの順番としては以下の順で、間にところどころ書き換えや名前の置換えが入ります。

  • autoscan
  • autoheader
  • aclocal
  • automake
  • autoconf
  • ./configure
  • make

細かい解説はREADMEにREFERENCEと書かれているドキュメントを読むのがいい気がします。僕は実際にこれらの解説を読んでこのコミット群を作りました。

上のGnome Developerの図では、configure.acは自分で用意することになってますが、autoscanを使うと自動生成できます。
autoheaderでconfig.h.inを作成する部分も書かれてませんね。

2. 他人のconfigureを修正する時

上記の事がわかっていると、./configureがうまく行かなかった場合、以下の3つの事ができるようになります。

  1. configureを修正する。
  2. configure.ac(昔はconfigure.in)を必要なら修正して、autoheader(大抵automakeからでOK)からやり直す。
  3. Makefile.amを必要なら修正して、autoscanからやり直す。

3.の方に行けば行くほど直すべきファイルの行数が少ないので直しやすくなるはずです。

awakia
検索とか推薦とかやってきたエンジニア。早稲田の山名研出身。大学院の頃、論文を書こうとしない僕を見かねた教授に、北京のMSRAに追放されるが3ヶ月後無事帰還。 大学を卒業後、エンジニアのブラックホールとの別名を持つGoogleに吸収されそうになるが1年2ヶ月後無事生還。 現在は、Wantedly(https://www.wantedly.com/ )の4番目のエージェントとして救出活動に専念。
http://awakia-n.hatenablog.com/
wantedly
「シゴトでココロオドル」ためのビジネスSNS「Wantedly」の開発・運営をしています。
https://wantedlyinc.com/ja/presentations
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away