1

外部コードを含む大きなプロジェクトを開始しています。今では、次のようなディレクトリ構造があります。

MyProject
|-- include
|    |-- FANN 
|    |    |-- src
|    |    |    |-- include
|    |-- eigen
|         |-- Eigen
|-- MyLibrary
|       +-- header1.H
|       +-- header2.H
|       +-- otherheaderN.H
|-- test
        +-- Makefile
        +-- test1.cpp
        +-- testN.cpp

外部コード、独自のヘッダー ファイル、およびcpp テスト コードincludeに subdir を使用しています。MyLibrarytest

FANN、Eigen、およびその他のライブラリがあります。私は彼らのコードを直接使用していますが、ファイルを含めたり、さまざまなディレクトリを操作したりした経験はありません。

Makefile には、次のような行があります。

test1:
    g++ -I $(FANN) -I $(FANNINCLUDE) -I $(EIGEN) -I $(MyLib) test1.cpp -o test1

このようにコンパイルして解決しましたが、さまざまな -I オプションを使用するのが良くないかどうかはわかりません。たとえば、FANN/src へのパスに FANN を使用し、path/src/include に FANNINCLUDE を使用していることを見てください。これは、FANN/src/"doublefann.c" をインクルードしていて、#include"config.h" (FANN/src/include 内の config.h) があるためです。私はめちゃくちゃです!

ファイルを整理するためのより良い方法をお勧めしますか、それとも良いですか? Makefileで間違っていますか?他の提案をいただければ幸いです。

4

1 に答える 1

1

doublefann.c を含めるのは良い考えではないと思います。

この状況に対処するには、すべての外部コードを共有 (または静的) ライブラリにコンパイルしてから、ヘッダーを MyLibrary (またはテスト) ディレクトリのファイルに含めます。コンパイル後、ライブラリに「リンク」できます。

Makefile から切り替えるオプションがある場合は、CMake の方が適しています。私の経験では、CMake を使用してプロジェクトを整理する方が、Makefile を使用するよりも簡単です。

于 2012-07-07T17:07:20.780 に答える