当前位置: 首页 > news >正文

CMake项目中的main函数重复定义错误

今天在Windows 10上使用Visual Studio 2022进行C/C++的项目开发,用CMake构建项目,结果在Powershell上执行构建项目的指令:

cmake --build build --config Release

出现了输出报错内容:


适用于 .NET Framework MSBuild 版本 17.12.12+1cce779681>Checking Build SystemBuilding Custom Rule J:/ThreeDimensionVisualize/ThreeDimensionVisualize/CMakeLists.txtCMakeCXXCompilerId.cppmain.cppGenerating Code...
main.obj : error LNK2005: main already defined in CMakeCXXCompilerId.obj [J:\ThreeDimensionVisualize\ThreeDimensionVisu
alize\build\ThreeDimensionVisualize.vcxproj]
J:\ThreeDimensionVisualize\ThreeDimensionVisualize\build\Release\ThreeDimensionVisualize.exe : fatal error LNK1169: oneor more multiply defined symbols found [J:\ThreeDimensionVisualize\ThreeDimensionVisualize\build\ThreeDimensionVisuali
ze.vcxproj]

ChatGPT对此解释是:
链接器发现程序里有两个 main() 函数的定义,你的 main.cpp 定义了一个 main(),CMakeCXXCompilerId.cpp 也定义了一个 main()。

CMakeCXXCompilerId.cpp是CMake自动生成的测试文件,用来在 配置阶段检测编译器的类型和版本。 CMake把这个文件也当作源文件编译进了项目。

我的CMakeLists.txt中,搜索源文件的语句是:

# 递归搜索目录下所有.cpp文件
file(GLOB_RECURSE ALL_SOURCES"${CMAKE_SOURCE_DIR}/*.cpp"
)

将其改成:

# 搜索目录下所有.cpp文件
file(GLOB ALL_SOURCES"${CMAKE_SOURCE_DIR}/*.cpp"
)

构建成功:


适用于 .NET Framework MSBuild 版本 17.12.12+1cce779681>Checking Build SystemBuilding Custom Rule J:/ThreeDimensionVisualize/ThreeDimensionVisualize/CMakeLists.txtmain.cppThreeDimensionVisualize.vcxproj -> J:\ThreeDimensionVisualize\ThreeDimensionVisualize\build\Release\ThreeDimensionVisualize.exeBuilding Custom Rule J:/ThreeDimensionVisualize/ThreeDimensionVisualize/CMakeLists.txt
http://www.lryc.cn/news/596293.html

相关文章:

  • 拆分、合并PDF
  • 实现分布式锁
  • 数据库表介绍
  • 金仓数据库风云
  • Docker 安装、常用命令、应用部署
  • 3516cv610 mqtt库移植
  • 【工作常用】C++/QT插件编程思想——即插即用
  • React 英语单词补全游戏——一个寓教于乐的英语单词记忆游戏
  • docker build 和compose 学习笔记
  • 如何构建FunASR的本地语音识别服务
  • 开发者如何集成AI绘画?智创聚合API简化Midjourney接入
  • Linux系统权限全面解析:掌握你的数字王国钥匙
  • RPA软件机器人如何提高工作效率?
  • LeetCode 1.
  • GRU模型
  • Three.js 实现梦幻星河流光粒子特效原理与实践
  • sysbench对linux服务器上mysql8.0版本性能压测
  • Java(Set接口和HashSet的分析)
  • 决策树学习笔记
  • C++类和对象(3)
  • C++刷题常用方法
  • 4.组合式API知识点(2)
  • 低速信号设计之 MII 篇
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘Cython’问题
  • 【大模型记忆实战Demo】基于SpringAIAlibaba通过内存和Redis两种方式实现多轮记忆对话
  • 【打怪升级 - 01】保姆级机器视觉入门指南:硬件选型 + CUDA/cuDNN/Miniconda/PyTorch/Pycharm 安装全流程(附版本匹配秘籍)
  • LSTM+Transformer炸裂创新 精准度至95.65%
  • 一款功能全面的文体场所预约小程序
  • C#初学知识点总结
  • linux-计划任务