第一次在C中编译时VSCode出错

x8goxv8g  于 8个月前  发布在  Vscode
关注(0)|答案(1)|浏览(100)

当我尝试在C中编译我的Hello World时,我得到了这个错误:
终端进程启动失败:shell可执行文件“c:\Users\kuro6\Desktop\programme simple\Cours\C\gcc”的路径不存在。
我在VSCode中有C/C扩展,C/C编译运行,MinGW正确安装在我的PC上(代码块工作用于编译器)

9w11ddsr

9w11ddsr1#

就像在评论中提到的,可能是VSCode无法找到GCC,并且在您的路径中有一个空间,所以有时也会导致问题。
你需要提供更多的信息,比如在你的项目中文件是如何组织的,你使用的是什么构建系统,你是如何编译它的(比如你使用的是什么命令或按钮)。但无论如何,我会给你一个给予一般性的解决方案,为我工作。

检查GCC

进入终端并输入gcc --version
如果你得到这样的东西:

gcc (Rev1, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

这意味着GCC已经安装,并且应该可以通过VSCode找到。
如果不是,只需搜索“VSCode C C++”或其他内容,它会引导您进入此页面,在标题“示例:在Windows上安装MinGW-x64”。

建筑

如果你只有一个main.c,那么你可以直接把它传递给GCC,它会编译,没有问题。

gcc ./main.c -o main.exe

如果你想调试它,那么也告诉GCC使用-g-g3添加调试符号,如果你想设置优化级别,那么传递这些-O0-O1-O3之一。

使用CMake

如果你有很多文件,你可以使用CMake来管理构建,并自动将内容传递给GCC。一个简单的CMakeLists.txt应该是这样的。

# Tell CMake about your project name and version etc
cmake_minimum_required(VERSION 3.19)
set(PROJECT_NAME "your_project")
project(${PROJECT_NAME} VERSION 0.1 LANGUAGES C CXX)

# Add your executable and attach it to main.c
add_executable(${PROJECT_NAME} main.c)

# Add your library folders
add_subdirectory(library_1)
add_subdirectory(library_2)
add_subdirectory(library_3)
add_subdirectory(library_4)

但请记住,每个库文件夹也会有一个CMakeLists.txt。就我个人而言,我喜欢用库的名字创建一个文件夹,用相同的名字创建一个.c和.h文件。这样

library_1
  |- library_1.h
  |- library_1.c
  |- CMakeLists.txt

然后把它放到library_1 cmake中。

get_filename_component(CURRENT_DIR_NAME ${CMAKE_CURRENT_LIST_DIR} NAME)
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/${CURRENT_DIR_NAME}.c)
target_include_directories(${PROJECT_NAME} PRIVATE .)

它会自动选择库名称以及.c和.h文件名,因此您可以将其复制粘贴到所有库中。
然后你可以像这样建造

cmake -GNinja -Bbuild
ninja -C build

VSCode扩展

我正在开发一个VSCode扩展,它可以为您完成所有这些步骤,并创建一个预配置的CMake项目。它还提供了用于清理,构建,运行,调试和测试这些项目的按钮,因此您不必一次又一次地处理终端。
我叫它C Toolkit
因此,顾名思义,它只在C中创建预配置的项目,而不是C++。但你可以创建项目和重命名文件,它可能会工作,我想。让我知道如果你决定使用它,如果它解决了你的问题。

相关问题