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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
結城
記事: 52
登録日時: 14年前
連絡を取る:

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

#1

投稿記事 by 結城 » 12年前

こんばんは
いつもお世話になっています<(_ _)>
今回、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]
といったものです

よろしくお願いいたします
最後に編集したユーザー 結城 on 2012年11月12日(月) 21:43 [ 編集 1 回目 ]
ANGE;ART

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

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

#2

投稿記事 by beatle » 12年前

unixディレクトリとlinuxディレクトリの関係はどうなっているのでしょうか.
現状での問題点(エラーが出る?)は何でしょうか.

アバター
結城
記事: 52
登録日時: 14年前
連絡を取る:

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

#3

投稿記事 by 結城 » 12年前

>unixディレクトリとlinuxディレクトリの関係
すみません><
linuxはunixのタイポでした

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

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

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

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

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

#4

投稿記事 by ISLe » 12年前

./Makefile.amに書いてあるapp.cppとapp.hは、unix/app.cppとunix/app.hのことですか?
それともOpenMMD.cppと同じ階層にもapp.cppとapp.hがあるのでしょうか。

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

閉鎖

“C言語何でも質問掲示板” へ戻る