プロジェクト ディレクトリを整理する一般的な方法の 1 つは、多かれ少なかれ次のようなものです。
MyLib +--mylib_class_a.h mylib_class_a.cpp mylib_library_private_helpers.h mylib_library_private_helpers.cpp マイアプリ +--other_class.h other_class.cpp app.cpp
app.cpp
:
#include "other_class.h"
#include <mylib_class_a.h> // using library MyLib
.h
同じライブラリのファイルはすべて.cpp
同じディレクトリにあります。名前の衝突を避けるために、ファイル名には多くの場合、会社名やライブラリ名がプレフィックスとして付けられます。MyLib は MyApp のヘッダー検索パスなどに含まれます。私はファイル名にプレフィックスを付けるのは好きではありませんが#include
、ヘッダー ファイルがどこに属しているかを正確に把握するために、. ファイルを整理するこのアプローチは嫌いではありませんが、もっと良い方法があるはずだと思います。
新しいプロジェクトを開始するので、ディレクトリ構成のアイデアを募集したいと思います。現在、私はこのディレクトリ構造が好きです:
ProjA +--含む +--ProjA +--mylib +--class_a.h +--アプリ +--other_class.h +--src +--mylib +--class_a.cpp library_private_helpers.h library_private_helpers.cpp +--アプリ +--other_class.cpp app.cpp util.h
app.cpp
:
#include "util.h" // private util.h file
#include <ProjA/app/other_class.h> // public header file
#include <ProjA/mylib/class_a.h> // using class_a.h of mylib
#include <other3rdptylib/class_a.h> // class_a.h of other3rdptylib, no name collision
#include <class_a.h> // not ProjA/mylib/class_a.h
#include <ProjA/mylib/library_private_helpers.h> // error can't find .h
.cpp
ファイルとプライベート (即時ライブラリにのみ表示される).h
ファイルは、src ディレクトリ (src は lib と呼ばれることもあります) の下に格納されます。パブリック ヘッダー ファイルは project/lib ディレクトリ構造に編成され、<ProjectName/LibraryName/headerName.h>
. ファイル名の前に何も付けません。他のチームが使用できるように MyLib をパッケージ化する必要が生じた場合は、makefile を変更して、適切なバイナリ ファイルと include/ProjA ディレクトリ全体をコピーするだけで済みます。
ファイルがソース管理にチェックインされ、人々がファイルの作業を開始すると、ディレクトリ構造を変更するのは難しくなります。初めのうちはきちんとしたほうがいいです。
このようなソース コードを整理した経験のある人はいますか? 気に入らない点はありますか?もっと良い方法があれば、ぜひ教えていただきたいです。