0

私は一般的にファイルと Linux プログラミングを作成するのが初めてで、Netbeans プロジェクト/作成ファイルを設定して自分のやりたいことを行うのに少し問題があります。私のプロジェクトは、まとめてアーカイブされるグループに分割された一連のライブラリで構成されています。

さらに説明すると、基本的に各 .cpp ファイルは個別のライブラリであり、.o ファイルにコンパイルする必要があります。次に、各グループのすべての .o ファイルを .a ファイルにアーカイブする必要があります。コマンドラインでは、次の行に沿って何かを行います。

for i in *.cpp; do g++ -I./ -c $i -o $i.o ; done

それから:

ar -r "libWhatever.a" *.o

私が助けを必要としているのは、ライブラリ .o ファイルを正しいグループ フォルダーに出力し、それが作成しているすべての余分なフォルダーを取り除くようにメイク ファイルを設定することです。また、ライブラリ グループをまとめて自動的にアーカイブするようにしたいと考えています。

私のプロジェクトは次のように設定されています:

project -> source - > library_group -> cpp files + sub-folders containing cpp files that are part of the library group.

project -> header -> library_group -> h files + sub-folders containing h files that are part of the library group.

次に、NetBeans で、「ソース ファイル」と「ヘッダー ファイル」プロパティの下にある「インクルード ディレクトリ」を設定して、必要なすべてのファイルとフォルダを含めます。

プロジェクトは問題なくコンパイルされるようになりましたが、次のように出力されます。

build -> Debug -> GNU-Linux-x86 -> Project -> library_group -> libraries + sub-folders containing more libraries.

私が望むのは、出力が次のようになることです。

build -> Debug -> library_group (this folder should contain all .o files associated with the library group)

私がやりたいことをするためにメイクファイルを設定する方法についてのアイデアはありますか?

4

1 に答える 1

0

これには数回の反復が必要な場合があります。私はたくさん推測する必要があります。

まず、単一のオブジェクト ファイルを作成してみましょう。ソース ファイルの 1 つが でfoo/bar.cpp、 と が含まれている場合はbaz.hquartz/quince.h次のルールを試してください。

build/Debug/library_group/bar.o : project/source/library_group/foo/bar.cpp
    g++ -Iproject/source/library_group -Iproject/source/library_group/quartz -c $< -o $@

そして結果を教えてください。

于 2013-06-11T21:53:54.057 に答える