2017-06-15 91 views
1

CMakeLists.txt中,有沒有辦法知道文件是從終端還是通過gui(某種形式,例如ccmakecmake-gui)執行?無論我是在運行cmake還是ccmakeCMAKE_COMMANDCMAKE_EDIT_COMMAND都被填充。確定cmake是從終端還是執行

我正在尋找variables,這兩個似乎是最有前途的。我迷戀於colorizing cmake output,許多精彩的答案都有它們的缺點。也就是說,我可以得到:

  1. 它在終端中按預期工作,但在ccmake中有轉義序列。
  2. 它按照預期在終端中工作,但ccmake終端是通過彩色輸出(LOL)覆蓋

只是好奇,如果有一種方法來確定這在CMakeLists.txt。有腳本模式的變量(-P)似乎可能有用,但我想首先需要知道哪個可執行文件(cmakeccmake)首先稱爲我的CMakeLists.txt

+0

據我所知,CMake中沒有辦法區分cmake和cmake-gui。你的用例是什麼?無論如何,它應該表現得一樣,其他一切都會讓人感到驚訝。 – usr1234567

+0

是的,我不認爲有可能區分。用例非常簡短,我真的不能想到爲什麼有人會想要這樣的另一個原因。我的庫能夠爲用戶編譯其外部依賴項,但是**不能**執行安裝的最後步驟(將文件添加到需要提升權限的位置)。我添加了彩色輸出以引起注意(因爲我的應用程序無法在沒有用戶執行額外步驟的情況下運行)。但是GUI不喜歡我的彩色輸出x0 – sjm324

+0

您的終端應該處理彩色輸出。可能你直接將它添加到輸出中,這是你問題的真正原因。 – usr1234567

回答

0

據我所知,無法區分代碼是從CMake還是從CMake-gui調用。代碼應該以相同的方式運行,其他一切都會讓用戶感到驚訝。

您可以嘗試檢測CMake-gui的一個實例是否正在運行,但這很容易出錯,並且不適合實際使用情況。

+0

太糟糕了。我只是可能需要查看源代碼並提交一個補丁,假設解決方案沒有影響。我已經在Python中看到了檢測輸出是否進入終端或管道傳輸到文件的能力,以及是否刪除了着色文件。無論如何,感謝在稱:) – sjm324