c++ - 如何修复 Clion 中目标错误的配方?
问题描述
在 clion 中执行程序时收到以下错误。
"C:\Program Files\JetBrains\CLion 2019.2.3\bin\cmake\win\bin\cmake.exe" --build C:\Users\two43\CLionProjects\cse\cmake-build-debug --target cse -- -j 2
[ 25%] Linking CXX executable cse.exe
CMakeFiles\cse.dir\build.make:114: recipe for target 'cse.exe' failed
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: CMakeFiles\cse.dir/objects.a(lecture-2.cpp.obj): in function `main':
C:/Users/two43/CLionProjects/cse/lecture-2.cpp:24: multiple definition of `main'; CMakeFiles\cse.dir/objects.a(lecture-1.cpp.obj):C:/Users/two43/CLionProjects/cse/lecture-1.cpp:19: first defined here
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [cse.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles/cse.dir/all] Error 2
CMakeFiles\Makefile2:74: recipe for target 'CMakeFiles/cse.dir/all' failed
mingw32-make.exe[1]: *** [CMakeFiles/cse.dir/rule] Error 2
CMakeFiles\Makefile2:81: recipe for target 'CMakeFiles/cse.dir/rule' failed
mingw32-make.exe: *** [cse] Error 2
Makefile:117: recipe for target 'cse' failed
以下是CMakeLists.txt
文件:
cmake_minimum_required(VERSION 3.15)
project(cse)
set(CMAKE_CXX_STANDARD 17)
add_executable(cse main.cpp lecture-1.cpp lecture-2.cpp)
解决方案
您正在编译两个文件,cse/lecture-1.cpp
并且cse/lecture-2.cpp
. 两者都包含一个main
功能。您不能构建具有多个main
功能的单个可执行文件。
通过在 CMake 定义中使用add_executable
两次使它们成为单独的可执行文件。如果您提供了 CMake 定义,我将向您展示。
编辑:根据您的 CMake 定义,使用
cmake_minimum_required(VERSION 3.15)
project(cse)
set(CMAKE_CXX_STANDARD 17)
add_executable(lecture-1 main.cpp lecture-1.cpp)
add_executable(lecture-2 main.cpp lecture-2.cpp)
这假定main.cpp
,尽管它的名字,不包含另一个 main
功能。如果是这样,你也需要一个单独add_executable
的。
推荐阅读
- php - Laravel - 将过滤器传递给模型
- c# - 如何从另一个类访问实例化对象?
- python - tkinter:RuntimeError:线程只能启动一次
- git - 如何修复另一个内部的 GitHub 存储库并且隐藏“更高”存储库中的文件?
- sql - 特定 fname、mname、lname 上的全名解析
- uml - UML 图:我可以在一个用例图中使用两个或多个相同的用例吗?
- unit-testing - 单元测试 - 棱镜 - Xamarin.Forms - INavigationService 问题
- android - 在颤动中使用图像列表多重上传图像
- python - Python:如何在浮点数中打印 100.0 而不是 100
- unit-testing - 使用涉及 dynamo db 的 xunit 进行单元测试