地表最強-CLion一鍵分別運行多個cpp方法-C++


3樓貓 發佈時間:2024-06-22 15:55:12 作者:Duke, Language

NOTE

文章標題所提到的是指中文互聯網易於得到的搜索結果中,本方法是運行起來最為快捷的、準備起來最為簡易並且一勞永逸的。不包含stackoverflow、reddit等英文社區可能存在的更優解決方案。

小黑盒文章容易錯亂、吞圖片,請看評論區!!!

痛點所在#

眾所周知,CLion在創建項目後會自動給我們一個main.cpp,如果我們想在項目目錄中同時存放多個cpp文件,會發現其他cpp的main函數是無法運行的。

地表最強-CLion一鍵分別運行多個cpp方法-C++-第0張

目前網上已有的各種博客和解決方案無非是:

  1. 在右上角的運行區域手動添加當前cpp文件的運行配置
  2. 在Cmake配置文件中手動引入當前cpp文件,之後重載Cmake項目,從右上角運行區域選擇需要運行的cpp
  3. 在Cmake配置文件中寫腳本或者直接全局引入*.cpp,在設置中勾選自動重載Cmake項目,最後從右上角運行區域選擇需要運行的cpp
  4. 安裝插件來一鍵在Cmake配置文件中引入,從右上角運行區域選擇需要運行的cpp
  5. 安裝插件來直接編譯cpp,但是運行起來不方便

但是這些方案,我認為全都不夠方便,都需要多次鼠標甚至是編輯文件操作,完全是浪費了效率,也不優雅。急需尋找一套不借助任何插件!

解決思路#

藉助腳本文件,將當前cpp文件傳遞給編譯腳本,編譯完成後在終端中執行exe成品

具體實現#

WARNING

在CLion設置中進行任何編輯之後,應該立即點擊應用按鈕,否則極可能出錯。必要的時候可以關閉設置頁面重開。

創建編譯運行腳本#

在不包含空格和中文的目錄中創建run_current.bat,其中內容按照如下格式填寫

@echo off setlocal rem Get the filename without extension set filename=%1 set target_name=%~n1 rem Navigate to the project directory cd /d %~dp0 rem Compile the CPP file 你的編譯器路徑\mingw64\bin\g++ -o 你希望編譯文件輸出的位置\OUTPUT\%target_name% %filename% if %errorlevel% equ 0 ( rem Run the executable if the build was successful 你希望編譯文件輸出的位置\OUTPUT\%target_name% ) else ( echo Build failed ) endlocal

其中,你的編譯器路徑如果你不知道,可以打開CLion>設置>構建執行部署>工具鏈>MinGW(默認)>工具集>下拉菜單

這裡面會顯示你的編譯器路徑,注意不要有空格,如果有需要在bat裡面加引號:"你的編譯器路徑\mingw64\bin\g++"

腳本的含義是接受cpp文件作為參數,然後在控制檯編譯並運行它。

地表最強-CLion一鍵分別運行多個cpp方法-C++-第1張

你應該提前創建好這個路徑中的所有文件夾,不允許中文和空格:

你希望編譯文件輸出的位置\OUTPUT\

一切完成後保存,複製bat文件的路徑,我這裡以D:\WORK\run_current.bat為例。在你實踐的時候記得替換成自己的目錄。

向腳本傳參#

來到CLion>設置>工具>外部工具>加號,創建一個外部程序入口。

地表最強-CLion一鍵分別運行多個cpp方法-C++-第2張

名稱隨便寫,程序填寫cmd.exe。實參填寫/c "D:\WORK\run_current.bat" "$FileDir$\$FileName$",注意替換這裡面的bat文件位置。工作目錄填寫$ProjectFileDir$

這裡的意思是以當前項目目錄為工作目錄調用我們的編譯運行腳本,同時把cpp文件路徑+文件名.cpp作為參數傳遞到腳本中執行。

添加快捷鍵#

來到CLion>設置>按鍵映射>外部工具>外部工具>外部工具>雙擊選擇添加鍵盤快捷鍵,這裡推薦Alt+Shift+Z,方便按還沒有熱鍵衝突。

消除“不屬於任何項目目標”警告#

由於CLion默認Cmake配置原因,除了main.cpp之外的cpp默認都不能開啟代碼洞察(如果你創建CPP文件的時候沒勾選加入項目目標的話)。

首先來到CLion>設置>構建執行部署>Cmake勾選自動重載Cmake項目:

地表最強-CLion一鍵分別運行多個cpp方法-C++-第3張

隨後來到默認創建的CMakeLists.txt中,將set(CMAKE_CXX_STANDARD XX)這一行以下的內容刪除,替換為:

file(GLOB SOURCES "*.cpp") add_executable(項目名 ${SOURCES})

cmd控制檯顯示中文亂碼#

對於某些設備,用c++輸出中文的時候,控制檯都是亂碼。造成此現象的原因是GBK於UTF8編碼的轉換問題。來到CLion>設置>編輯器>文件編碼將全局改為GBK即可。

對於已有的UTF8編碼的cpp文件,可以打開它後雙擊shift,選擇操作,輸入文件編碼,選擇文件編碼(文件|文件屬性)。在彈出菜單中選擇GBK,最後單擊轉換即可。

爽一把#

在項目裡面任意位置新建一個cpp,隨便寫點代碼,按一下Alt+Shift+Z。終端瞬間就會開始編譯執行你當前的cpp文件啦!如絲般順滑~

地表最強-CLion一鍵分別運行多個cpp方法-C++-第3張

© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com