首页 > 解决方案 > 如何在 Clion 上运行多个 C 代码?

问题描述

这是我的第一个问题,所以我将尝试解释有关我的问题的所有内容。所以,我下载了 Clion 来为我的大学学位编写我的第一个 C 程序。因此,当我在 C 上创建一个简单的 Hello World 时,我可以正常运行,但是如果我创建一个新程序或一个新的 hello world,程序将失败,并在 Clion 上出现以下错误:

> ====================[ Build | MeusCodigosC_2_0 | Debug ]======================== "C:\Program Files\JetBrains\CLion
> 2020.2.1\bin\cmake\win\bin\cmake.exe" --build "C:\Users\salom\CLionProjects\MeusCodigosC 2.0\cmake-build-debug"
> --target MeusCodigosC_2_0 -- -j 12 Scanning dependencies of target MeusCodigosC_2_0 [ 33%] Building C object
> CMakeFiles/MeusCodigosC_2_0.dir/AtividadeProducaoLabU2.c.obj [ 66%]
> Building C object CMakeFiles/MeusCodigosC_2_0.dir/HelloWorld.c.obj
> [100%] Linking C executable MeusCodigosC_2_0.exe
> c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> CMakeFiles\MeusCodigosC_2_0.dir/objects.a(HelloWorld.c.obj): na
> função "main": C:/Users/salom/CLionProjects/MeusCodigosC
> 2.0/HelloWorld.c:7: múltiplas definições de "main"; CMakeFiles\MeusCodigosC_2_0.dir/objects.a(AtividadeProducaoLabU2.c.obj):C:/Users/salom/CLionProjects/MeusCodigosC
> 2.0/AtividadeProducaoLabU2.c:32: definido primeiro aqui collect2.exe: error: ld returned 1 exit status mingw32-make.exe[3]: ***
> [MeusCodigosC_2_0.exe] Error 1 mingw32-make.exe[2]: ***
> [CMakeFiles/MeusCodigosC_2_0.dir/all] Error 2 mingw32-make.exe[1]: ***
> [CMakeFiles/MeusCodigosC_2_0.dir/rule] Error 2 mingw32-make.exe: ***
> [MeusCodigosC_2_0] Error 2
> CMakeFiles\MeusCodigosC_2_0.dir\build.make:119: recipe for target
> 'MeusCodigosC_2_0.exe' failed CMakeFiles\Makefile2:94: recipe for
> target 'CMakeFiles/MeusCodigosC_2_0.dir/all' failed
> CMakeFiles\Makefile2:101: recipe for target
> 'CMakeFiles/MeusCodigosC_2_0.dir/rule' failed Makefile:137: recipe for
> target 'MeusCodigosC_2_0' failed

我检查了我的 CMakeLists.txt,我读到它是使您的代码运行的文件,并且新代码已经添加到目标中,但我仍然无法运行它。我发现的唯一解决方法是删除我不使用的旧代码,只保留我想在那个特定时刻使用的代码,然后我才能在 Clion 上运行我的 C 代码。有人遇到过这样的问题吗?谢谢!

标签: cclion

解决方案


错误消息说(如果我正确理解葡萄牙语)编译的文件中main定义了几个函数。

main()是执行程序时运行的函数。几个同名的函数意味着编译器不知道你要运行哪一个。

如果您正在编写几个不同的程序,只需将它们保存在单独的文件夹中,或者确保您CMakeLists.txt只包含其中一个。

UPD:看起来 CLion 支持一个项目创建多个可执行文件。请参阅文档

在您的情况下,CMakeFile.txt可能应该包含两行(文件名可能需要更正):

add_executable(hello_world HelloWorld.c)

add_executable(MeusCodigosC_2_0 AtividadeProducaoLabU2.c)

如果 HelloWorld 和 Lab2 应该共享一些代码,您可以将其解压缩到单独的文件中,例如common.c,然后更新项目以说

add_executable(hello_world HelloWorld.c common.c)

add_executable(MeusCodigosC_2_0 AtividadeProducaoLabU2.c common.c)


推荐阅读