天使と悪魔選手権

ubuntu 13.x という少し古いものを使っています。
流体物理シミュレーションプログラムのソースからのコンパイルをマニュアルに沿って行っています。
以下のような手順でmakeしていくところでエラーとなります。
1.make.incを編集してmakeを実行する。
makefileからmake.incが指定されているのでmakefileそのものは編集しません。

make.inc 抜粋 環境変数を直列につなげてフォルダを指定する
TOPDIR =/home/hogehoge/XXX_source
INSTALLDIR = $(TOPDIR)/libs/install
LIBDIR = -L$(INSTALLDIR)/lib
INCDIR = -I$(INSTALLDIR)/include

make cleanの後, make の結果のメッセージ

> icc -c -O3 -I/home/hogehoge/XXX_source /libs/install/include xxx.c
> icc: error #10236: file is missing: '/libs/install/include'

これを見ると, iccの1つ目のところで”source /libs/”の中のスペースがあります。
iccコマンドでフォルダが2つ指定されていることになります。これはおかしいと思います。
2行目のメッセージはごもっともということです。
なぜここにスペースが入るのかという問題です。前段のmake.incで環境変数を直列に足していってフォルダ名にしているのでスペースになるはずがないのですが。

これらはもっとずっと長いmake.incやmakefileの中でおかしなことが起こってるのか、それとも上記の中に問題があるかを思案しています。make.incの書き方に問題があるでしょうか。

ところで、 icc -c -O3 -I/...ですが、-I以下はインクルードファイルがあってそれを読み込むということでしょうか。特に読み込むファイルが無くても一応指定しておくということ(なぜなら中身は空)ということもあるのでしょうか。

よろしくお願いします。

A 回答 (2件)

あと抜けてた…。



>-I以下はインクルードファイルがあってそれを読み込むということでしょうか。

インクルードファイルの検索パスに追加する。
という指定です。
デフォルトで検索する場所にない場合に
#includeでフルパス(またはすでに検索パスにある場所からの相対パス)で記述する必要がありますが、検索パスに追加することで長いフルパスや相対パスを書かずにすみます。
    • good
    • 0

>これを見ると, iccの1つ目のところで”source /libs/”の中のスペースがあります。



普通に考えたら
>TOPDIR =/home/hogehoge/XXX_source
>INSTALLDIR = $(TOPDIR)/libs/install
のTOPDIRの後に空白があるか、INSTALLDIRの設定の中に空白がある…ということになるかと。
へんな改行コードになっていないかも確認されてはどうでしょう?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!