2017-06-15 12 views
1

CMakeLists.txtには、ファイルが端末から実行されたかどうかを知る方法がありますか(たとえば、ccmakeまたはcmake-gui)。 CMAKE_COMMANDCMAKE_EDIT_COMMANDは、cmakeまたはccmakeのどちらを実行しているかにかかわらず、両方とも入力されます。cmakeが端末またはGUIから実行されているかどうかを確認する

variablesで検索していましたが、この2つが最も有望なようでした。私はcolorizing cmake outputに夢中になりました。多くの素晴らしい答えには欠点があります。すなわち、私は得ることができます:

  1. これは、端末では期待どおり動作しますが、ccmakeにエスケープシーケンスがあります。
  2. 端末では正常に動作しますが、ccmake端末はで、カラー化出力(LOL)でを上書きします。

CMakeLists.txtでこれを判断する方法があるかどうか不思議です。潜在的に役立つようなスクリプトモード(-P)の変数がありましたが、最初にCMakeLists.txtと呼ばれる実行可能ファイル(cmakeまたはccmake)を知る必要があると思います。

+0

私が知る限り、CMakeをCMake内のcmake-guiと区別する方法はありません。あなたのユースケースは何ですか?とにかく同じように動作するはずです。他のすべては驚きです。 – usr1234567

+0

ええ、それを区別することはできないと思います。ユースケースは非常に分かりました。私は正直なところ、誰もがこれを望む理由を考えることはできません。私のライブラリは、ユーザーの外部依存関係をコンパイルすることができますが、**インストールの最終ステップを実行することはできません**(アクセス許可を必要とする場所にファイルを追加することはできません)。私はこれに注意を引くために色付きの出力を追加しました(私のアプリケーションはユーザーが余分なステップを実行しなくても実行できないためです)。しかし、GUIは私のカラー化された出力を好まないx0 – sjm324

+0

あなたの端末はカラー化された出力を扱うべきです。おそらく、それを直接出力に追加することになります。これが問題の本当の原因です。 – usr1234567

答えて

0

私が知る限り、コードがCMakeから呼び出されたのかCMake-guiから呼び出されたのかを区別する方法はありません。コードは同じように動作するはずです。他のすべてがユーザーにとって驚きです。

CMake-guiのインスタンスが実行されているかどうかを検出しようとする可能性がありますが、これはエラーが発生しやすく、実際の使用の場合には正当化されません。

+0

あまりにも悪い。私はちょうどソースコードに目を通して、ソリューションが邪魔にならないと仮定してパッチを提出しなければならないかもしれません。 Pythonでは、出力がファイルへのターミナルまたはパイプに送られるかどうかを検出し、ファイルの場合はカラーリングを取り除くことができます。関係なく、計量のおかげで:) – sjm324

関連する問題