CLion新建C++源文件报multiple definition of `main'错误如何处理
multiple definition of `main'
错误原因
- C++ 程序的入口函数
main()有唯一性要求:同一个可执行文件的所有编译单元中,只能存在一个main函数定义 - 你的项目同时存在
main.cpp、khush.cpp两个包含main函数的源文件 - CLion 默认的 CMake 配置会将项目中所有源文件关联到同一个可执行目标,链接时检测到重复的
main定义,直接抛出重定义错误,后续的make报错都是该问题引发的连锁错误。
解决方案
根据你新增khush.cpp的实际用途,选择对应处理方案:
方案A:khush.cpp为项目辅助文件,不需要独立运行
直接删除khush.cpp中的main函数即可,将该文件的逻辑封装为普通函数、类,在main.cpp的主函数中调用即可正常编译。
方案B:khush.cpp为独立程序,需要单独运行
修改项目根目录下的CMakeLists.txt文件:
- 找到原有配置中类似如下的全局编译语句:
add_executable(cpp_files main.cpp khush.cpp)
- 将其修改为两个独立的可执行目标声明:
# 声明main.cpp对应的可执行目标 add_executable(main main.cpp) # 声明khush.cpp对应的可执行目标 add_executable(khush khush.cpp)
- 修改完成后点击 CLion 弹出的「Reload CMake Project」提示完成配置更新,后续可以在右上角的运行目标下拉框中,自主选择要编译运行的程序。
内容的提问来源于stack exchange,提问作者Khushal Garg
相关产品推荐
相关产品推荐

