1. 程式人生 > 程式設計 >如何在 clion 執行多個 main 函式(方法詳解)

如何在 clion 執行多個 main 函式(方法詳解)

在寫 C++ 的題目的時候經常會遇到這樣的問題,寫了多個 cpp 檔案,在 clion 中編譯報錯不能同時存在多 main 函式
這裡寫了一個小程式優雅地解決這個問,非常簡單,就是就是讀字串寫檔案
直接修改一下 CMake 自動遍歷檔案即可

多個 main 函式的報錯

在 clion 中寫完一題,想寫下一題,結果發現 main 函式不能執行

none-main

正確的解決方法

在牛客使用者AAnonymous的告知下,借鑑了他的 github 上的CMakeLists.txt,直接修改 CMakeLists.txt 即可,之前自己寫了一個傻傻的方法。以我的 Project 的 CMakeList.txt 為例

cmake_minimum_required(VERSION 3.15)
project(JZ_offer)

set(CMAKE_CXX_STANDARD 14)

# 遍歷專案根目錄下所有的 .cpp 檔案
file (GLOB files *.cpp)
foreach (file ${files})
 string(REGEX REPLACE ".+/(.+)\\..*" "\\1" exe ${file})
 add_executable (${exe} ${file})
 message (\ \ \ \ --\ src/${exe}.cpp\ will\ be\ compiled\ to\ bin/${exe})
endforeach ()

在新建對應的xx.cpp檔案之後,建立main函式,在專案處右擊,選擇Reload CMake Project

reload-cmake

在重新載入完之後可以看到main函式前面出現了執行按鈕,執行框列表也有了對應的執行選項

run-button

補充

部落格底下有人問這種方法只能遍歷根目錄下的一層,如果根目錄下還有資料夾,則裡面的 cpp 檔案沒有被識別,查了一個有點舊的官方文件,有GLOB_RECURSE的方法,不過也試了一種自己的方法

# 如果你只需要根目錄下的 test 資料夾的所有 .cpp 檔案
file (GLOB files test/*.cpp)
# 如果你只有兩層目錄的話
file (GLOB files *.cpp */*.cpp)
# 同理,三層的話
file (GLOB files *.cpp */*.cpp */*/*.cpp)

# 官方提供了一種遞迴的方法
# 這樣在執行框會多一個 CMakeCXXCompilerId,不過無傷大雅
file (GLOB_RECURSE files *.cpp)

還有人問如果我想在執行框顯示資料夾/檔名應該怎麼做,經過測試對於/應該是 CMAKE 中使用的符號,不能在其中使用,\\1\\2之間可以用.-

string(REGEX REPLACE ".+/(.+)/(.+)\\..*" "\\1-\\2" exe ${file})

到此這篇關於如何在 clion 執行多個 main 函式(方法詳解)的文章就介紹到這了,更多相關clion 執行多個 main 函式內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!