如何在 clion 運行多個 main 函數(shù)(方法詳解)
在寫 C++ 的題目的時候經(jīng)常會遇到這樣的問題,寫了多個 cpp 文件,在 clion 中編譯報錯不能同時存在多 main 函數(shù)
這里寫了一個小程序優(yōu)雅地解決這個問,非常簡單,就是就是讀字符串寫文件
直接修改一下 CMake 自動遍歷文件即可
多個 main 函數(shù)的報錯
在 clion 中寫完一題,想寫下一題,結(jié)果發(fā)現(xiàn) main 函數(shù)不能運行
正確的解決方法
在牛客用戶 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 ()
在新建對應(yīng)的 xx.cpp
文件之后,創(chuàng)建 main
函數(shù),在項目處右擊,選擇 Reload CMake Project
在重新加載完之后可以看到 main
函數(shù)前面出現(xiàn)了運行按鈕,運行框列表也有了對應(yīng)的運行選項
補充
博客底下有人問這種方法只能遍歷根目錄下的一層,如果根目錄下還有文件夾,則里面的 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)
還有人問如果我想在運行框顯示 文件夾/文件名 應(yīng)該怎么做,經(jīng)過測試對于 /
應(yīng)該是 CMAKE 中使用的符號,不能在其中使用,\\1
和 \\2
之間可以用 .
和 -
string(REGEX REPLACE ".+/(.+)/(.+)\\..*" "\\1-\\2" exe ${file})
到此這篇關(guān)于如何在 clion 運行多個 main 函數(shù)(方法詳解)的文章就介紹到這了,更多相關(guān)clion 運行多個 main 函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!