私が管理しているライブラリには、pthreads に依存する関数がいくつかあります。プロジェクトは automake を使用します。pthreads への依存関係を無効にする構成オプションを作成したいと考えています。これは単にこれらの関数をコンパイルしないようにする必要があります。(理由は、特定のクロスコンパイルおよび組み込みターゲットのためです。)
これらの関数を含むファイルをコンパイルしないことは今のところ問題ありませんが、これらの関数とそれらが使用する 1 つの構造体がパブリック ヘッダーで定義されていることに気付きました。
- ライブラリのメンテナンスの観点から、ここでの正しいアプローチは何ですか?
- パブリックヘッダーで型または関数をオプションにする正しい方法は何ですか?
最初は、ヘッダーを autoconf 入力 (.in) ファイルに変換し、これらの関数とタイプをオプションで削除してヘッダーを生成する必要があると考えました。
では、異なるバージョンのライブラリが同時にインストールされている可能性のあるシステムについてはどうでしょうか? 通常、これらはヘッダーを共有できるはずです。
これらの関数を回避するためにプリプロセッサ条件を使用するヘッダーを作成し、pkg-configそれをコマンドライン オプションとして指定するために使用する必要がありますか?
別のアイデアは、これらの関数と型を独自のヘッダーに移動し、pthread が無効になっているときにこのヘッダーをインストールしないようにすることです。これは、ヘッダーの編成をわずかに台無しにすることを意味しますが、おそらく最良のアイデアです。私はあなたの意見が欲しいのですが、ライブラリの公開ヘッダーでオプション機能を処理する最良の方法は何ですか?