桜、抹茶、白、日記

名古屋市在住のC++使いのcoderの日記だったもの。

Autotools

wikipedia:Autotoolsの使い方をまとめたページってあまり見かけない気がするので、シンプルな使い方について。自前でMakefileなんて書きたくないし。自分は今まで使っていなかったのですが、皆さん当たり前に使っているのでしょうね。多分。

ファイル&フォルダ構成

srcフォルダはなしにしてベタに同じフォルダにおいても良いけど、管理しやすくする為に分けた方が良い希ガス
rootフォルダで以下のコマンドを実行すると御馴染みのconfigureスクリプトが生成される。configure.ac/Makefile.amに変更を加える度にこのコマンドを自分で実行します。Makefileまで生成した場合には勝手に更新チェックしてくれますけども。

$ autoreconf --force --install
or
$ autoreconf -fi

古い情報だとautoconf/automakeコマンドを実行するような記述があるけども、最近はautoreconfコマンドのみで良い。
あとはconfigure && makeするのみ。因みにmake installすると「/usr/local」配下にインストールされる。インストール先の変更はprefixオプションにて。固定パスにする方法はまだ未調査。

$ make install prefix=`pwd`

ファイルの中身

root/configure.ac
AC_INIT([test1],[1.0])
AC_CONFIG_SRCDIR([src/main.cpp])

AM_INIT_AUTOMAKE([foreign])

AC_PROG_CXX

AC_CONFIG_FILES([ \
Makefile \
src/Makefile \
])
AC_OUTPUT

「test1」って定義しているのが実行ファイル名ですね。

root/Makefile.am
SUBDIRS = src

QtCreatorのAutotoolsプラグインではこのrootフォルダのMakefile.amがプロジェクトファイルとして扱われます。

root/src/Makefile.am
bin_PROGRAMS = test1
test1_SOURCES = \
    main.cpp \
    $(NULL)

開発の際には一般的なプロジェクトファイルにあたるのがこのファイル。「bin_PROGRAMS」「xxx_SOURCES」は予約されたワードなので変更不可。実行ファイル毎のSOURCESに実装ファイル(*.cpp等)を追加していきます。

root/src/main.cpp
#include <iostream>
int main()
{
    std::cout << "Hellow World" << std::endl;
    return EXIT_SUCCESS;
}

QtCreatorでAutotools対応プラグインを使った状態


インクルードパスの指定とかリンクライブラリの追加とか、config.hの追加とかはまた後日に。