2009-07-05 8 views
0

OMakeのドキュメントを見ると、サブディレクトリのソースが使用されるたびに見えます。常にスタティックライブラリにコンパイルされています。これはいつも必要ですか?ライブラリを構築せずにすべてをコンパイルしてリンクすることはできますか?私はこのためにOMakefilesを書くことを試みてきましたが、成功しませんでした。サブディレクトリを持つOMakeコンパイル

例ディレクトリ構造:

MyProjectと:OMakeroot、のOMakefile、main.cppに

MyProjectと/ヘッダ:file1.h

MyProjectと/ SRC:file1.cpp


myproject OMakerootの内容:

オープンビルド/ C

.SUBDIRS:。コンテンツのOMakefile

MyProjectと:

CXX = G ++

CXXFLAGS = -Wall

は+ =ヘッダーSRC

CXXProgram(myappの、主FILE1)


を含みます

OMakヘッダとsrcディレクトリのefilesは空であり、何かが必要な場合はわかりません。

私はオマケmyappのを実行すると、私はエラーを取得する:そのオマケはそれが必要であることを知っているので、

は「myappの」

答えて

0

に必要な「file1.o」を構築する方法を知ってはいけないが、src/file1をお試しくださいfile1.oの代わりにsrc/file1.oを作成する必要があります。したがって、file1.cpp(これは存在しません)の代わりにsrc/file1.cppが必要です。

1

今後の参考のために、ここでMaxicatが参照するスレッドに掲載ソリューションです(に言い換えソリューションだけを表示してください)。

It is not the case that you have to compile into static libraries, but the default assumption is that each object file goes into the same directory as the source file.

INCLUDES += headers src

INCLUDES is only for the header files. You need

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

(Note1 - the order of the previous two lines is important. The way I wrote it, the src dir would get the updated INCLUDES; if you do not want that, reorder the two.)

(Note2 - the above would expect an src/OMakefile file, even though an empty one would do. You could write something like

.SUBDIRS: src 
    return # A no-op body 

to "inline" the ./src/OMakefile into the ./OMakefile)

CXXProgram(myapp, main file1)

Should be

CXXProgram(myapp, main src/file1) 
関連する問題