Как заставить CMake находить системные библиотеки по умолчанию для связывания без ручных манипуляций со сценариями?

Я пытаюсь создать проект CMake на своем новом компьютере, я установил соответствующий комплект разработчика Windows 10. Но при попытке создать файлы сборки с помощью cmake я получаю ошибки связывания с помощью внутренних сценариев тестирования компилятора cmake, говорит:

-- Check for working C compiler: X:/xx/xx/LLVM/bin/clang.exe - broken
CMake Error at D:/BuildTools/CMake/share/cmake-3.30/Modules/CMakeTestCCompiler.cmake:67 (message):
  The C compiler

    "X:/xx/xx/LLVM/bin/clang.exe"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: 'X:/x-projects/cmake-initial/build/CMakeFiles/CMakeScratch/TryCompile-ywq7mz'

    Run Build Command(s): X:/BuildTools/Ninja/ninja.exe -v cmTC_f9821
    [1/2] <A long list of commands/subcommands invoked by cmake>
    [2/2] <A long list of commands/subcommands invoked by cmake>
    FAILED: cmTC_f9821.exe
    
    lld-link: error: could not open 'kernel32.lib': no such file or directory
    lld-link: error: could not open 'user32.lib': no such file or directory
    lld-link: error: could not open 'gdi32.lib': no such file or directory
    lld-link: error: could not open 'winspool.lib': no such file or directory
    ...list goes on...

    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    ninja: build stopped: subcommand failed.

Примечание. Я сократил количество ненужных элементов журнала ошибок, и это облегчило чтение.

Теперь, как вы видите, он не может ссылаться на библиотеки, включенные в мой комплект разработчика Windows. Я попытался добавить каталог библиотеки внутри Windows Dev Kit в PATH. Все еще не работает!
Я не использую набор инструментов Visual Studio и MSVC, я использую CMake с набором инструментов Ninja и Clang. Я не хочу вручную изменять эти сценарии тестирования компилятора, потому что это создает еще больше беспорядка.

Обновлено:
Таким образом, вопрос сводится к следующему: Как убедиться, что CMake найдет эти системные библиотеки для связи без внесения каких-либо изменений в сценарии сборки (CMakeLists.txt) (автоматический поиск системных библиотек)?

Пожалуйста, дайте ссылку на руководство/руководство/спецификацию, которому вы следовали при установке. Я спрашиваю, потому что многие вопросы сводятся к следующему: «Я только что попытался установить самую недружелюбную для новичков среду из существующих, без систематического и проверенного руководства».

Yunnosch 18.07.2024 11:18

На моем старом компьютере все было хорошо, у меня была настроена цепочка инструментов clang, но у меня не было комплекта разработчика Windows, вместо этого у меня была установлена ​​Visual Studio с установленными библиотеками разработки msvc и C++. С этим все сработало нормально, я просто ищу решение, чтобы эти сценарии тестовой компиляции находили их, не изменяя. (На новом компьютере)

LakshyaK2011 18.07.2024 12:07

Итак... вы пробовали без гида?

Yunnosch 18.07.2024 12:19

Да. Я сам настроил цепочку инструментов, мне просто нужно знать, смогу ли я связать эти библиотеки с этой тестовой программой, созданной сценариями тестирования компилятора cmake.

LakshyaK2011 18.07.2024 12:29

@Yunnosch Проще говоря, я пытаюсь вручную настроить среду разработки в редакторе кода vsc, а не в vs ide. У меня возникли проблемы с настройкой Windows 10 SDK с помощью CMake, поскольку он не может найти библиотеки разработчиков Windows.

LakshyaK2011 19.07.2024 18:16
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Хорошо, я понял, что компоновщик не смог найти необходимые библиотеки Windows Dev Kit для компоновки, поскольку подкоманда, сгенерированная тестовыми сценариями компилятора cmake, не содержит пути к этим библиотекам.
Простое решение этой проблемы — создать переменную среды с именем LIB, содержащую путь к папке этих библиотек. В моем случае:
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\ucrt\x64

(; используется для разделения обоих путей) Это заставило компоновщик заглянуть в эти папки и подхватить нужные библиотеки.

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