使用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你的源碼文件名的。