ページ 11

automakeを使用したサブディレクトリを含むMake

Posted: 2012年11月11日(日) 18:44
by 結城
こんばんは
いつもお世話になっています<(_ _)>
今回、LinuxでAutomakeを使用したサブディレクトリを含むMakeの件についてお尋ねしたいと思います。
まず、サブディレクトリを含まない、カレントディレクトリのみにソースコードがある場合のMakeは成功しております。
しかし、やはりコードを整理したり何だりとしたいので
サブディレクトリに格納して全体をMakeできないかと2日ほど模索してみたのですが、
未だに解決法が見当たらないため、皆様の力をお借りしたい次第です。はい

えー、まず簡単なファイル構造がこちらです

[hr]
OpenMMD/
 │ (unixフォルダ内はapp.cpp app.hだけ)
 ├ unix/
 │   ├ app.cpp
 │   └ app.h
 ├ OpenMMD.cpp
 ├ OpenMMD.h
 : (ヘッダーとかコードとか)
[hr]

そして最終的にこれを一つのライブラリOpenMMD.aとしてまとめ上げたいのですが
いかんせんどのようにMakefile.amなどを配置すればいいのかいまいち理解できません
とりあえず現状の配置は

./Makefile.am

コード:

noinst_LIBRARIES = libOpenMMD.a
libOpenMMD_a_SOURCES = OpenMMD.cpp OpenMMD.h appcmn.h config.h define.h include.h static.h unicode.cpp unicode.hpp app.cpp app.h 
INCLUDES = -I /usr/local/boost/include/
SUBDIRS = unix 
./configure.ac

コード:

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.68])
AC_INIT(libOpenMMD, 0.0.1, angeart☆angeart.net)
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([appcmn.h])
AC_CONFIG_HEADERS([config.h])

# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_AWK
AC_PROG_RANLIB
AC_PROG_CPP
AC_PROG_MKDIR_P

# Checks for libraries.

# Checks for header files.
AC_PATH_X
AC_CHECK_HEADERS([stdlib.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_C_INLINE

# Checks for library functions.

AC_CONFIG_FILES([Makefile
                 unix/Makefile])
AC_PROG_RANLIB
AC_OUTPUT
./unix/Makefile.am

コード:

noinst_LIBRARIES = libOpenMMD.a
libOpenMMD_a_SOURCES = app.cpp app.h 
INCLUDES = -I /usr/local/boost/include/
SUBDIRS = 
※SUBDIRSが空なのは適当に書いたスクリプトで生成してるせいです

一応そのスクリプトの挙動も書いておきます。

[hr]
STEP1
サブディレクトリ列挙
    ↓
STEP2
ソースコードがあったらディレクトリに入って
autoscanを実行してからMakefile.amを生成する
    ↓
STEP2繰り返し
    ↓
STEP3
元のカレントディレクトリに入って
autoscan
Makefile.am生成
configure.scan→configure.ac変換
autoheader
automake -a -c
autoconf
を行う
[hr]
といったものです

よろしくお願いいたします

Re: automakeを使用したサブディレクトリを含むMake

Posted: 2012年11月12日(月) 09:53
by beatle
unixディレクトリとlinuxディレクトリの関係はどうなっているのでしょうか.
現状での問題点(エラーが出る?)は何でしょうか.

Re: automakeを使用したサブディレクトリを含むMake

Posted: 2012年11月12日(月) 21:42
by 結城
>unixディレクトリとlinuxディレクトリの関係
すみません><
linuxはunixのタイポでした

先に投稿した記事の方修正しました

>現状での問題点(エラーが出る?)は何でしょうか.

この時点で出るエラーはapp.oが見つかりませんと言われます

Re: automakeを使用したサブディレクトリを含むMake

Posted: 2012年11月12日(月) 22:46
by ISLe
./Makefile.amに書いてあるapp.cppとapp.hは、unix/app.cppとunix/app.hのことですか?
それともOpenMMD.cppと同じ階層にもapp.cppとapp.hがあるのでしょうか。

unixサブディレクトリでのターゲットもlibOpenMMD.aなのでしょうか。
単にソースファイルをサブディレクトリに移動しただけならサブディレクトリでmakeする必要ないと思いますが。