2016-07-06 58 views
0

TL; DR:如何讓CLion在構建新代碼之前關閉任何正在運行的代碼版本?在構建新代碼之前終止以前的迭代

我已經開始使用CLion for C++。我注意到我經常忘記停止最後一次迭代,然後再次嘗試編譯,導致「權限被拒絕」錯誤 - 當我第一次遇到這個錯誤時,在意識到它是之前花了差不多半個小時的時間處理權限設置因爲舊版本仍在運行,因此無法用新的可執行文件替換。

據我所知,沒有嵌入批處理(因爲我在Windows上)腳本,因此無法在CMake中執行此操作。我想避免這種情況,因爲對於...而言這會帶來很多不必要的複雜性,而不是那麼多的回報。

簡而言之,在CLion中還是有一個選項,或者CMake中的某個選項會在運行新版本時停止上一次迭代?

回答

2

是的。只需按ctrl + F2或轉到Run > Stop即可終止前一次迭代,以防止它繼續運行。

或者,您可以設置爲僅運行單個實例。這種方式以前的實例總是會在運行新的實例之前終止。要啓用此功能,請轉至Run | Edit Configurations並選擇Single Instance Only

+0

答案的後半部分實際上回答了我的問題,即如何在開始另一個實例之前自動終止前一個實例。謝謝! –

+0

@QPaysTaxes聽起來很棒。我仍然在回答中留下第一部分,以防某人想要終止它(在不停止調試器的情況下關閉控制檯並且該過程不會終止時通常會有幫助)。 –

0

據我所知,默認情況下這是不可能的。 一個解決方案,我發現是創建一個包含以下內容的批處理文件:

@echo on 
tasklist /FI "IMAGENAME eq %1" 2>NUL |find /I "%1">NUL 
if "%ERRORLEVEL%"=="0" taskkill /F /im %1 

(第二行檢查進程是否正在運行 - 在這裏找到:How to check if a process is running via a batch script

和編輯構建配置,使在每次構建之前,CLion調用批處理文件並將流程名稱傳遞給它。

這是它如何工作的:

  1. 運行>編輯配置>選擇配置改變(在我的情況「全部構建」)
  2. 在「發射前:外部...」 - 部分單擊綠色加
  3. 選擇「運行外部工具」,然後單擊綠色加號,在彈出的窗口中
  4. 選擇一個名稱,該工具
  5. 添加批處理文件的路徑在「程序:」字段
  6. $ProjectName$.exe進入「參數:」字段中
  7. 單擊確定,直到你回來在配置窗口
  8. 通過選擇它並點擊箭頭向上

現在應該給腳本足夠的優先級嘗試在每次構建之前終止正在運行的進程。