G++.exe: ошибка: /utf-8: входной файл компоновщика не найден: такого файла или каталога нет

Первый: среда разработки: Windows IDE: vscode когда я использую сборку cmake

#include "fmt/format.h"

int main(int, char **)
{
    fmt::print("Hello,world!\n");
}

информация об ошибке:

установить (CMAKE_VERBOSE_MAKEFILE ON)

введите сюда описание изображения

[main] 正在生成文件夹: c:/Users/syk/Desktop/c-c++/build 
[build] 正在启动生成
[proc] 执行命令: chcp
[proc] 执行命令: D:\mingw64\bin\cmake.EXE --build c:/Users/syk/Desktop/c-c++/build --config Debug --target all -j 10 --
[build] D:\mingw64\bin\cmake.exe -SC:\Users\syk\Desktop\c-c++ -BC:\Users\syk\Desktop\c-c++\build --check-build-system CMakeFiles\Makefile.cmake 0
[build] D:\mingw64\bin\cmake.exe -E cmake_progress_start C:\Users\syk\Desktop\c-c++\build\CMakeFiles C:\Users\syk\Desktop\c-c++\build\\CMakeFiles\progress.marks
[build] D:/mingw64/bin/mingw32-make.exe  -f CMakeFiles\Makefile2 all
[build] mingw32-make[1]: Entering directory 'C:/Users/syk/Desktop/c-c++/build'
[build] D:/mingw64/bin/mingw32-make.exe  -f CMakeFiles\TestVcpkg.dir\build.make CMakeFiles/TestVcpkg.dir/depend
[build] mingw32-make[2]: Entering directory 'C:/Users/syk/Desktop/c-c++/build'
[build] D:\mingw64\bin\cmake.exe -E cmake_depends "MinGW Makefiles" C:\Users\syk\Desktop\c-c++ C:\Users\syk\Desktop\c-c++ C:\Users\syk\Desktop\c-c++\build C:\Users\syk\Desktop\c-c++\build C:\Users\syk\Desktop\c-c++\build\CMakeFiles\TestVcpkg.dir\DependInfo.cmake --color=
[build] mingw32-make[2]: Leaving directory 'C:/Users/syk/Desktop/c-c++/build'
[build] D:/mingw64/bin/mingw32-make.exe  -f CMakeFiles\TestVcpkg.dir\build.make CMakeFiles/TestVcpkg.dir/build
[build] mingw32-make[2]: Entering directory 'C:/Users/syk/Desktop/c-c++/build'
[build] [ 50%] Building CXX object CMakeFiles/TestVcpkg.dir/a.cpp.obj
[build] D:\mingw64\bin\g++.exe -DFMT_SHARED @CMakeFiles/TestVcpkg.dir/includes_CXX.rsp -g /utf-8 -MD -MT CMakeFiles/TestVcpkg.dir/a.cpp.obj -MF CMakeFiles\TestVcpkg.dir\a.cpp.obj.d -o CMakeFiles\TestVcpkg.dir\a.cpp.obj -c C:\Users\syk\Desktop\c-c++\a.cpp
[build] g++.exe: warning: /utf-8: linker input file unused because linking not done
[build] g++.exe: error: /utf-8: linker input file not found: No such file or directory
[build] mingw32-make[2]: *** [CMakeFiles\TestVcpkg.dir\build.make:79: CMakeFiles/TestVcpkg.dir/a.cpp.obj] Error 1
[build] mingw32-make[2]: *** Deleting file 'CMakeFiles/TestVcpkg.dir/a.cpp.obj'
[build] mingw32-make[2]: Leaving directory 'C:/Users/syk/Desktop/c-c++/build'
[build] mingw32-make[1]: *** [CMakeFiles\Makefile2:85: CMakeFiles/TestVcpkg.dir/all] Error 2
[build] mingw32-make[1]: Leaving directory 'C:/Users/syk/Desktop/c-c++/build'
[build] mingw32-make: *** [Makefile:93: all] Error 2
[proc] 命令“D:\mingw64\bin\cmake.EXE --build c:/Users/syk/Desktop/c-c++/build --config Debug --target all -j 10 --”已退出,代码为 2
[driver] 生成完毕: 00:00:01.612
[build] 生成已完成,退出代码为 2

Мой CmakeLists.txt:

cmake_minimum_required(VERSION 3.0)
add_executable(TestVcpkg a.cpp)
set(CMAKE_VERBOSE_MAKEFILE ON)
find_package(fmt CONFIG REQUIRED)
target_link_libraries(TestVcpkg PRIVATE fmt::fmt)

когда я использую gcc 13.1.0 x86_64-w64-mingw32, произошла ошибка но я использую комплект Visual Studio, ошибок нет и я установил cmd и powershell в utf-8

Я нашел Google и stackoverflow Я нашел эти места, не сообщают о проблеме

Пожалуйста, отредактируйте свой вопрос, чтобы показать нам свой CMakeLists.txt файл.

Some programmer dude 12.08.2024 14:16

Также обратите внимание, что разные компиляторы имеют разные флаги и параметры. Большинство опций, используемых для MSVC, не могут использоваться для GCC или Clang, и наоборот.

Some programmer dude 12.08.2024 15:38
/utf-8 похоже на то, что будет использовать компилятор Microsoft
BoP 12.08.2024 15:42
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вывод показывает, что вы передаете аргумент /utf-8 в g++:
. D:\mingw64\bin\g++.exe -DFMT_SHARED @CMakeFiles/TestVcpkg.dir/includes_CXX.rsp -g /utf-8 -MD -MT CMakeFiles/TestVcpkg.dir/a.cpp.obj -MF CMakeFiles\TestVcpkg.dir\a.cpp.obj.d -o CMakeFiles\TestVcpkg.dir\a.cpp.obj -c C:\Users\syk\Desktop\c-c++\a.cpp

g++ не знает этого аргумента и пытается передать его на этап связывания как объектный файл, но это не удается, поскольку такого файла нет. Удалите /utf-8 из аргументов g++.

Извините, я не знаю, как изменить /utf-8, потому что я использовал плагины cmake.

user21947699 12.08.2024 16:10

@user21947699 user21947699 Хорошо, тогда обновите свой вопрос и поместите в него файл CMakeLists.txt, который вы используете для сборки проекта. Вы можете даже найти в нем /utf-8 в виде обычного текста, и если да, удалите его из всех определений, которые будут использоваться g++.

Ted Lyngmo 12.08.2024 16:11

я изменил это

user21947699 12.08.2024 16:19

@user21947699 user21947699 Если это действительно все в твоем CMakeLists.txt, то что-то очень не так. Содержат ли 4 файла fmt-*.cmake (которые прилагаются к установке fmt) что-нибудь о Windows или utf-8? У меня этого не происходит только с этим CMakeLists.txt файлом, он компилируется нормально. Возможно, вы получили fmt не напрямую с github, а через какой-то репозиторий Microsoft? В этом случае они могли изменить библиотеку fmt, чтобы она работала только с их компилятором. Кроме того, вы ранее выполняли сборку в том же каталоге, используя другой компилятор?

Ted Lyngmo 12.08.2024 16:43

Я использую vcpkg, устанавливаю его

user21947699 12.08.2024 17:03

@user21947699 user21947699 Хорошо, возможно, в этом причина. Итак, содержат ли файлы fmt-*.cmake что-нибудь о utf-8 или каких-либо других специфичных для MSVC вещах? Возможно, вам стоит просто построить fmt самостоятельно.

Ted Lyngmo 12.08.2024 17:11

в fmt-targets.cmake содержатся INTERFACE_COMPILE_OPTIONS "\$<\$<COMPILE_LANGUAGE:CXX>:/utf-8>"

user21947699 12.08.2024 17:26

Я предполагаю, что это установка MSVC vcpkg, которая несовместима с mingw.

Alan Birtles 12.08.2024 17:26

@user21947699 user21947699 Да, именно так. Это будет работать только с MSVC. Вам нужна fmt библиотека без таких вещей. Рекомендую построить его самостоятельно.

Ted Lyngmo 12.08.2024 17:30

спасибо, я безумно благодарен!

user21947699 12.08.2024 17:35

@user21947699 user21947699 Рад, что помогло! Пожалуйста!

Ted Lyngmo 12.08.2024 17:40

Я использую vcpkg, устанавливаю его. Вы использовали правильный триплет для MinGW? Помните, что x86-windows* и x64-windows* предназначены для msvc и не должны использоваться для MinGW. У MinGW есть свои тройки: https://stackoverflow.com/questions/63031513/vcpkg-with-ming‌​w

drescherjm 12.08.2024 17:59

@ user21947699 Посмотрите информацию, добавленную drecherjm, если вы не хотите создавать ее самостоятельно.

Ted Lyngmo 12.08.2024 18:29

Другие вопросы по теме