2011-07-15 16 views
1

私は、WindowsとLinuxの両方で動作する必要がある簡単なC++アプリケーションを開発中です。 Windows上で実行しているときは単純なGUIを表示し、Linux上で実行している場合はGUIを使用しないため、テキストUIを使用する必要があります。LinuxでGUIを無効にするQt LinuxでGUIを無効にする

Qtを使って(クロスプラットフォームから)アプリを書いてLinuxでのGUIの使い方を "#ifndef WIN32"を使ってSTDOUTに置き換えることができるのだろうか?

他の提案があれば幸いです。プログラムはxmlファイルからいくつかのプロパティを読み込み、それらのプロパティ(アクセスソケット、環境変数など)に従っていくつかのテストを実行します。私の目標は、プラットフォームごとに静的にコンパイルされた(実行不能な実行可能ファイルを取得する)単一のプロジェクトを作成し、異なるプロジェクトを作成することを避けることです。

ありがとうございます。

答えて

2

確かに可能ですが、可能な限り#ifdefを避けてください。

1つの方法は、非GUIクラスのすべてのコア機能(データ処理、ネットワークなど)を分離することです。次に、プレゼンテーションのために2組のクラスを作成します.1つはQWidgetに基づいており、もう1つはテキストの入出力です。

、それを包む使用(非GUIおよびGUIのためのQApplicationためQCoreApplicationの切り替え)した「プレゼンテーション」クラスを選択することができmain()#ifdefを使用します。

WIN32#ifdefを設定しないでください。カスタム変数を使用してください。そうすれば、よりよく慣れ親しんでいる環境で両方のバージョンを実行してテストすることができます。

+0

ありがとうございました。 – user847129

関連する問題