被clion默认不支持多main函数问题困扰许久, 今天终于彻底解决, 做个记录也希望能帮到有类似问题的朋友。
为什么会有这个问题
首先我们来看cmakelist这个文件
前三行是自动生成的项目的一些信息, 我们要看的就是add_executable这一句
它的形式类似于
add_executable(projectName file1.h file1.c·······)
第一个是项目名, 其它的都是头文件和源文件的文件名. 问题就出在这里, 一个项目中只需要一个main函数就够了, 其它的都可以看作是为main函数写的库, add_executable就是编译括号里面出现的所有的文件并以此创建一个exe文件. 所以被添加进add_executable中的全部文件中只能出现一个main函数.
完美的解决方案
那如何运行多个main函数呢?
我们在用dev这样的工具时会发现它为每一个cpp文件都创建了exe文件, 所以我们要做的事其实就是想办法为每一个cpp文件都创建exe文件.
比如有两个文件main1.cpp, main2.cpp
add_executable(path1 main1.cpp)
add_executable(path2 main2.cpp)
这样它就有两条编译路径了, 此时main1和main2都可以单独编译并生成exe文件
但这样我们每次新建文件都要去配置文件里面加上这么一句, 未免太麻烦了
这时可以用cmakelist的语法来完成自动化
cmake_minimum_required(VERSION 3.21)
project(C__Workplace)
set(CMAKE_CXX_STANDARD 14)#前三行不用改
#递归遍历所有的cpp文件
file (GLOB_RECURSE 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 ()
记得要开启cmakelist的自动更新, 以及在新建文件时取消勾选"Add to targets"(意思是将这个文件添加到当前编译路径中)(非常重要).
还有每次新建文件后, 要在项目文件栏右键选择reload project,重新自动生成cmakelist文件
至此Clion就被我们从一个专业的项目开发工具改造成了一个即写即用的脚本撰写工具, 非常适合只是拿c++来刷题的人.
新建项目,用于学习 C。其中每个 C 文件里面都有一个 main 函数。编译不通过,提示不能存在多个 main 函数。
面向百度,参考文献[1] 和 参考文献 [2] 都指出了正确的处理方法。
补充如下:
假设根目录下有 a.c 和 b.c 两个文件,以及目录 1 下面的文件 c.c,文件中均包含 main 函数,按如下设置即可
CMakeList.txt 中的
add_executable(111 a.c)
add_executable(222 b.c)
在这里有两个cpp文件,里面都有main函数,要在一个工程下运行多个就要修改CMakeLists.txt。
先看看修改后的:
add_executable(main main.cpp)中,括号前面的是运行时程序名称,后面是程序本身的名称(若在工程的某个目录下还会带有目录的名称)。
一开始时的CMakeLists.txt中可能是这样的,我们要删除这一行:
第6行可以不删除,只是运行时会多一个选项:
默认好像是运行第一个main程序。
若还需要写带有
def list_dir(fileList, pathList):
str_file=''
for (cur_file, path) in zip(fileList, pathList):
list_1 = os.path.dirname(path).split('\\')
list_2 =.
使用CLion 刷题解决多个main函数问题的终极方法
在写 C++ 的题目的时候经常会遇到这样的问题,写了多个 cpp 文件,在 clion 中编译报错不能同时存在多 main 函数。
下面列举几种方法:
方法1:重定义Main
在每个文件中通过重定义的方法来解决,在写某道算法时,对main进行重定义,
运行完后再修改回去,这样就能接下去就能再重定义为main函数接着运行了。
优点:不需要修改配置文件
缺点:会让源码文件中多出一些奇奇怪怪的代码,降低代码可阅读性!
方法2:手动修改CmakeList
CLion是一款功能强大的集成开发环境,用于开发C和C++程序。我们可以通过以下步骤来同时运行两个main函数。
1. 打开CLion并加载项目:对于第一个main函数,你应该已经在CLion中创建了一个C或C++项目。
2. 在同一项目中创建另一个源文件:右键单击项目,选择"New",然后选择"C/C++ Source File"。给新源文件起一个有意义的名称,如"main2.cpp"。
3. 在新源文件中编写代码:在新的源文件中编写第二个main函数的代码。
4. 配置CLion运行配置:在编辑器左上角的"Edit Configurations"按钮旁边选择你想要运行的主要main函数。然后点击"添加"(+号)按钮,在弹出窗口中选择"Executable"。在"Executable"字段中选择你想要运行的main函数所在的源文件,例如"main.cpp"。在"Program arguments"字段中输入适当的命令行参数。
5. 添加第二个运行配置:按照第4步的方法添加第二个运行配置。这次选择第二个main函数所在的源文件,例如"main2.cpp"。
6. 运行程序:点击"Run"按钮,CLion将同时运行两个main函数。你可以通过控制台窗口查看它们的输出结果。
需要注意的是,同时运行多个main函数可能会导致编译错误或运行时错误。确保两个main函数彼此独立,不会相互干扰,并考虑是否真正需要同时运行它们。