使用CLion 刷題解決多個main函數(shù)問題的終極方法

使用CLion 刷題解決多個main函數(shù)問題的終極方法

在寫 C++ 的題目的時候經(jīng)常會遇到這樣的問題,寫了多個 cpp 文件,在 clion 中編譯報錯不能同時存在多 main 函數(shù)。

下面列舉幾種方法:

方法1:重定義Main

在每個文件中通過重定義的方法來解決,在寫某道算法時,對main進(jìn)行重定義,

20200214091654844
20200214091722110

運(yùn)行完后再修改回去,這樣就能接下去就能再重定義為main函數(shù)接著運(yùn)行了。

20200214091842857

優(yōu)點(diǎn):不需要修改配置文件

缺點(diǎn):會讓源碼文件中多出一些奇奇怪怪的代碼,降低代碼可閱讀性!

方法2:手動修改CmakeList.txt

通過手動添加add_executable(編譯文件名 源碼文件地址)

cmake_minimum_required(VERSION 3.16)
project(C_AND_C_Plus_Plus_Practise)

set(CMAKE_CXX_STANDARD 14)

add_executable(MAIN main.cpp)

add_executable(CHelloWord ./C_Practise/HelloWord.c)
add_executable(C3test ./C_Practise/3_變量/test.c)
add_executable(DataStructureLove DataStructure/1Introduction/Love.cpp)
add_executable(DataStructureSqList DataStructure/2LinearList/SqList.cpp)
add_executable(DataStructureSqList1 DataStructure/2LinearList/SqList1.cpp)
add_executable(DataStructureLinkList DataStructure/2LinearList/LinkList.cpp)
add_executable(DataStructureLinkList1 DataStructure/2LinearList/LinkList1.cpp)

優(yōu)點(diǎn):只修改配置文件,不會影響源碼的可讀性

缺點(diǎn):每新建一個文件,就得修改配置文件,較為繁瑣!

方法3:在CMake文件中編寫自動生成程序

在Cmake文件中編寫程序,自動生成編譯后的文件名!

基礎(chǔ)版:

# 遍歷項目根目錄下所有的 .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 ()

上邊兒這段代碼,只會遍歷根目錄下的cpp文件,不會遍歷根目錄下的二級目錄。

進(jìn)階版:

# 遍歷項目根目錄及二級目錄下所有的 .cpp 文件
file (GLOB files *.cpp */*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 ()

進(jìn)階版就是手動添加訪問二級目錄的規(guī)則,同樣要訪問三級目錄就是再添加一個*/*/*.cpp

最優(yōu)版:

官方文檔提供一個解決方法GLOB_RECURSE,它會自動遍歷工程文件根目錄下的所有文件目錄。

# 遍歷項目根目錄下所有的 .cpp 文件
file (GLOB_RECURSE 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ōu)點(diǎn):方便省時

缺點(diǎn):這種方法要求所有cpp文件命名不重復(fù),不能含有中文,不能含有‘/’等字符!因?yàn)樗褪侵苯覥opy你的源碼文件名的。

參考文章:

文章1

文章2

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容