5

Windows、Linux、および Mac OSX で実行されるサービス/デーモンで構成されるマルチプラットフォーム プロジェクトに取り組んでいます。

私が持っているコードは移植可能で、アプリケーションはすべてのシステムで (コマンド ラインから) 正常に動作します。このアプリケーションはバックグラウンドで実行するように設計されているため、Windows では Windows サービス、Linux では Linux デーモン (init.d に適切なスクリプトを含む) にしました。

今、私の問題は Mac OSX です。私はこのオペレーティング システムの経験がほとんどなく、自分の状況に関するベスト プラクティスを見つけるのに苦労しています。

プロジェクト用のインストーラーが必要です (.app をインストールする可能性が高い .dmg ファイルだと思います。より良い代替手段があれば修正してください)。

ここに私のこのプロジェクトに関するいくつかの情報があります:

  • 完全に C++ でビルドされています (boost、curl、iconv を使用)
  • 現在のビルド システムは XCode ではありません (ただし、現在のコード レイアウトを維持しながら、すべてを XCode に統合してビルドする方法があれば、気にしません。いずれにしても、Windows で同様のことを行いました)。
  • グラフィカル ユーザー インターフェイスはありません
  • デーモンは、起動時に自動的に開始する必要があります (または、ユーザーが選択できるようにすることをお勧めします)。
  • デーモンは、実行中にルート アクセスを必要とします。

これはおそらく、1 つの質問に対して考慮すべき多くのコンテキストであるため、読みやすくするように努めます。

Mac OSX で純粋な C++ デーモンのインストーラーをどのようにパッケージ化/作成しますか?

4

3 に答える 3

3

.app としてパッケージ化することは、配布するものが単なるコマンド ライン以上のものである場合 (たとえば、静的構成データ、画像、フレームワーク/dylib などのリソースが付随する必要がある場合) にはある程度の意味があります。

正確に何が配布されるかに関係なく、すでに持っているツールを使用してインストーラーを作成できますpkgbuildproductbuild両方とも /usr/bin にあります。OS X インストーラー パッケージを Pro のように作成する - Xcode 開発者 ID 対応 pkgを使用すると、これらのツールの使用を開始できます。

于 2013-11-08T15:05:40.310 に答える
2

Apple が提供するDaemons and Services Programming Guideを確認しましたか? これはプラットフォームの紹介として非常に役立つと思いますし、正しい方向を示してくれるはずです (そうでない場合は、あなたが望むことを正確に行う方法を示していない場合)。

また、launchd もチェックしてください (このプログラミング ガイドで説明されています)。launchd は、OSX の公式のデーモン ランチャー/マネージャーであり、オペレーティング システムと高度に統合されています。既存のクロスプラットフォーム デーモンを起動されたデーモンにラップするのは簡単で、デーモンが自動的に起動するように OS X と統合できます。

于 2013-11-08T14:50:32.133 に答える