私のQt/C++アプリケーションでは、どのバージョンであるかを知りたいです。それはいくつかの設定ファイルではなく、アプリケーションバイナリにコンパイルされたバージョン番号であることを知るべきです。バージョン自体は "XYZ"のような文字列で、Xはメジャーバージョン番号、Yはマイナーバージョン番号、ZはSVNの下のリビジョンです(またはSVNのリビジョン番号からバージョン "XY0"のリビジョン番号を引いたもの) )。あなたはsconsでこれを達成する最も簡単な方法は何と思いますか?sconsでバージョンを管理するためのベストプラクティス?
答えて
SConsには、ファイルを生成するためのSubstfile
およびTextfile
ビルダーがあります。したがって、pysvnを使用して、または(ファイルからテンプレートを取得)またはTextfile
(提供されたコンテンツを書き込むだけ)を使用してファイルに出力を書き込む関数を作成します。そのファイルをコンパイルし、残りのアプリケーションとリンクするよりも。
ソースファイルでなければならないファイル(ないヘッダ)(C/C++を想定したが、同じ技術は、任意の言語に適切である)のような内容を含む:
char *VERSION = "X.Y.Z";
(および任意の他あなたが欲しい代替フォーマット)とどこかに、(それはとにかく意志、いくつかの他のソースは、おそらく右、あまりにも変更したため)一つだけのファイルが再コンパイルされますプラスアプリケーションが再リンクより
extern char *VERSION;
を宣言します。
ここに、[scons-users]メーリングリストの回答がいくつかあります。
ブライアンコーディ:我々は sconsの中を通過
1つのコマンドラインオプションが SVNリポジトリ担当者のバージョンです。この数値を define(-DREP_NUM = \ "123 \")に置き、 この番号を使用するC++コードに という文字列を作成します。これはサーバーの実行 ビルドのためのものです。バージョンXYZの誰かの ローカルビルドが必ずしも等しく他の誰かのXYZ は(ウィンドウで、ENVするvar USERNAME は、ログインしたユーザーが含まれていない ないため、ローカルビルドのために、私たちは実際に は、ユーザ名の代わりに、 バージョン番号を使用します)。 その他の考慮点は、 スココン内のコンパイルステートメントのいずれかの部分を変更すると、対象が自動的に であることを意味します。この問題を回避するには、 ビルドシステム は、 が実際にフラグを気にしているオブジェクトターゲットを1つ取り出します。 は、その1つのオブジェクトの コンパイルにのみフラグを渡します。
幸運
ゲイリーOberbrunner:
私はそれがどのバージョンを知っている私のQt/C++アプリケーションをしたいと思います。
役に立つかもしれ http://www.scons.org/wiki/BuildNumberProcessing でいくつかの情報があります。
- - ゲイリー
- 1. バージョン管理DTOベストプラクティス
- 2. AngularJS/JavaScriptファイルをバージョン管理するためのベストプラクティスは何
- 3. テキストデータのバージョン管理のベストプラクティス
- 4. バージョン管理されたエンティティのベストプラクティス?
- 5. バージョン管理規則とベストプラクティス
- 6. データベースのバージョン管理に関するベストプラクティス
- 7. バージョン管理システム間を移動するためのベストプラクティスは何ですか?
- 8. SVN:ライブサーバーのバージョン管理のベストプラクティス?
- 9. Flexアプリケーションのバージョン管理のベストプラクティス
- 10. Java/Springプロジェクトでバージョン管理されたREST APIコードを整理するベストプラクティス(例)
- 11. 初心者のためのバージョン管理
- 12. サードパーティのオープンソースライブラリへの変更を管理するためのベストプラクティス?
- 13. リモート専用サーバ上のサイトを管理するためのバージョン管理のアドバイス
- 14. Updated:Zend Frameworkの静的コンテンツを管理するためのベストプラクティス?
- 15. Web開発のソースコードのバージョン管理のベストプラクティスは何ですか?
- 16. LinqからSQL Dbmlファイルを管理するためのベストプラクティス?
- 17. バージョン管理下に非ソースファイルを保存するベストプラクティス
- 18. Webデザインに関するバージョン管理のベストプラクティス
- 19. 複数のプロジェクトでのバージョン管理のベストプラクティス
- 20. ファイル管理のベストプラクティス
- 21. クラウド内のデータを管理するためのベストプラクティスは何ですか?
- 22. 複数のデータベースを更新する移行を管理するためのベストプラクティス?
- 23. バックエンド管理システムのセットアップのためのRailsのベストプラクティス?
- 24. C++テキストファイルのバージョン管理とリビジョン管理のためのアプリケーションライブラリへの埋め込みは簡単ですか?
- 25. Androidで巨大なJSONファイル(〜19MB)を解析/管理するためのベストプラクティス
- 26. SVNでバイナリファイルのバージョン管理を管理する良い方法
- 27. バージョン管理されたモデル
- 28. Rails:mongo db(mongoid)のコンテンツのバージョン管理を行うのがベストプラクティスですか?
- 29. バージョン管理されたWebサービスのためのRailsルート
- 30. 大学新入生のためのバージョン管理を制御
バージョン番号の唯一の目的は、ユーザーに何かを表示する場合、文字列はOKです。プログラムによるアクセスがある場合は、それぞれのバージョンコンポーネントを個別のフィールドに入れたいと思うでしょう(http://stackoverflow.com/questions/2195573/why-use-a-nested-ruby-module-for-version-情報/ 2195824#2195824)。また、(例えば、リリースビルドスクリプトの)バージョン増分を簡単に自動化するために、バージョンをフィールドに分けることが勝利です。 –