0

OMake のドキュメントを見ると、サブディレクトリのソースが使用されているようです。それらは常に最初に静的ライブラリにコンパイルされます。これは常に必要ですか?ライブラリをビルドせずにすべてをコンパイルしてリンクできますか? 私はこれのために OMakefiles を書き込もうとしましたが、成功しませんでした。

ディレクトリ構造の例:

myproject: OMakeroot、OMakefile、main.cpp

myproject/ヘッダー: file1.h

myproject/src: file1.cpp


myproject OMakeroot の内容:

ビルドを開く/C

.サブディレクトリ: .

myproject Omakefile の内容:

CXX = g++

CXXFLAGS = -壁

INCLUDES += ヘッダー src

CXXProgram(myapp, メインファイル1)


ヘッダーと src ディレクトリの OMakefiles は空で、そこに何かを入れる必要があるかどうかわかりません。

omake myapp を実行すると、次のエラーが表示されます。

「myapp」に必要な「file1.o」のビルド方法がわからない

4

3 に答える 3

1

今後の参考のために、スレッドが消えた場合に備えて、Maxicatが参照しているスレッドに投稿された解決策を次に示します (解決策のみを示すように言い換えました)。

スタティック ライブラリにコンパイルする必要はありませんが、デフォルトでは、各オブジェクト ファイルがソース ファイルと同じディレクトリにあると想定されています。

INCLUDES += ヘッダー src

INCLUDES はヘッダー ファイル専用です。あなたが必要

INCLUDES += $(dir headers)
.SUBDIRS: src

(注 1 - 前の 2 行の順序が重要です。私が書いた方法では、src ディレクトリは更新された INCLUDES を取得します。それが必要ない場合は、2 行を並べ替えてください。)

(注 2 - 上記では src/OMakefile ファイルが必要ですが、空のファイルでも問題ありません。次のように記述できます。

.SUBDIRS: src
   return # A no-op body

./src/OMakefile を ./OMakefile に「インライン化」する)

CXXProgram(myapp, メインファイル1)

する必要があります

CXXProgram(myapp, main src/file1)
于 2009-08-13T03:02:42.127 に答える
0

を試してみてくださいsrc/file1。そうすれば、omakeは、src/file1.oの代わりにビルドする必要があることfile1.o、したがって(存在しない)src/file1.cppの代わりに必要であることを認識します。file1.cpp

于 2009-07-05T00:33:51.533 に答える
0

これは Omake メーリング リストで解決されました。完全を期すために、ここにスレッド リンクがあります

于 2009-07-13T19:51:44.563 に答える