私はクロスプラットフォームのソケットライブラリを作成しており、pimplイディオムを使用して、ユーザーがライブラリのヘッダーを含めることで、オペレーティングシステム固有の問題について心配する必要がないようにします。
したがって、たとえばファイルportable.hpp
は次のようになります:
// forward declare pimpl
struct socketimpl;
class portable
{
public:
private:
socketimpl *pimpl_; // hide OS specific details
};
しかし、実装ファイルに名前を付けるにはどうすればよいですか。
ができた portablewin.cpp
、portablelinux.cpp
など.
次に、サポートされているさまざまなオペレーティングシステム用の特定のフォルダーがありますか?
このようなフォルダ構造:
/makefile
/include/
/src/unix/
/src/windows/
次に、サポートされているプラットフォームごとに特定のファイルなどを持つヘルパーのmakefileを含む標準のmakefileがあります。
次に、OSごとにOS固有のメイクファイルを使用しますか?
それが最善の計画ですか?または他のアイデアはありますか?
どちらの方法でも機能します。だからあなたが好きなものを選んで、それからそれを一貫して適用してください。
あなたがあなたの選択をするのを助けるためのいくつかの意見:
portablewin.cpp
、portablelinux.cpp
であるplatform
サブディレクトリを使用できます。1か所で決定を下します。
ファイルへのパスとファイルの名前の両方でOSを認識できるようにします。それは2つの場所で行われている決定です。
この決定がファイルを扱うものでどれほど目に見えるようになるかに注意してください。