Основы CMake
Вставка
- Опубліковано 18 гру 2024
- ----------------------------------------------------------------------------------------------------------
GitHub проекта:
github.com/sim...
----------------------------------------------------------------------------------------------------------
Discord Server:
/ discord
----------------------------------------------------------------------------------------------------------
Мои соцсети:
VK: mtrx1
Twitch: / matrix_x
Поддержка канала: www.donational...
----------------------------------------------------------------------------------------------------------
Скидка на 5 евро - FWHWYA95 www.computerun...
видео 22 февраля 2019 года. Я сегодня в январе 2022 года проделал все что говорится в этом уроке, все работает. Актуально спустя 3 года. Спасибо за видео.
Это будет актуально ещё минимум 10 лет
@@synthwave_chad ну если установить все версии какие были тогда то будет вечность актуально
- "Актуально спустя 3 года."
Это было НЕ актуально еще до выкладывания - на Винде есть MS VS, VSC, да и тот же CodeBlocks и много чего еще... которые легко обходятся без CMake...
@@synthwave_chad - "Это будет актуально ещё минимум 10 лет"
Это было НЕ актуально еще до выкладывания - на Винде есть MS VS, VSC и тот же CodeBlocks и много чего еще... которые легко обходятся без CMake...
Можете объяснить: Для чего под Виндой CMake?
Вы реально предполагаете работу под Виндой хотя бы над средним проектом БЕЗ IDE??... Серьезно?
@@konstantinsamodurov436 Брух момент. Встроенные в среду системы сборки обычно достаточно ограничены(сложное поведение при сборке крайне не тривиально описывается, если это вообще можно сделать адекватными методами), непороворотливы, плохо соблюдают обратную совместимость(ака есть далеко не маленькие шансы что старый проект при обновлении среды не соберётся в определенный момент), плохо автоматизируемы/интегрируемы(ака считай всегда нормально интегрировать их в CI почти нереально, по крайней мере без горки доморощенных костылей), багаются иногда в самых неожиданных местах, имеют куда более посредственную документацию, ужасно плохо портируемы(ака часто без использования той же ide что и ты, фиг соберешь твой проект), а файловый формат используемый ими, для описания конфигураций билда, обычно выглядит как страшные почти нечитаемые xml станзы огромных размеров, которые "руками" допиливать долбанешься в случае чего. Cmake(да и другие системы сборки) тоже далеко не идеален, но на порядок лучше того что прикручивают к средам разработки, как минимум по тому что не приколачивает намертво проект к той или иной среде, и позволяет делится кодом куда более свободно.
Классно, для новичков самое то..
Наконец то понятно, ура, ура, ура!!!
Кто эти четверо, которые поставили дизлайк этому прекрасному человеку?
значит еще есть куда стремиться и повышать качество роликов)
@@SimpleCodingChannel , чем больше будешь стремиться, тем больше будет дизлайков.
- "Кто эти четверо, которые поставили дизлайк этому прекрасному человеку?"
Полагаю, это те, кто понимает, что CMake под Виндой - это "пятая нога"...
Под Виндой работают в IDE, и CMake - просто не нужен...
Другое дело под Линь...
@@konstantinsamodurov436под виндой может и не нужен, но если твой проект опенсурсный или ты работаешь в команде где у всех разные ОСи то CMake необходим
@@konstantinsamodurov436 а если писать код, который надо будет отдать кому-то дальше, но ты не знаешь, на чем там будут работать и под что компилить? Или как эта штука тогда работает? >.>
Просто единственное место, где я видел CMake - это для генерации исходников движка, чтоб сразу было под нужную VS-ку, и не надо было пол часа копаться в коде, пытаясь понять, че там устарело, где что-то не работает и т.д.
Все работает!у кого ошибки следите за форматом файлом которые создаете!
Вот вам 1000-ый лайк за такое хорошее объяснение!
У кого ошибка выскакивает при cmake .. скорее всего у вас файл называется main.cpp , но в Cmakelist у вас написано add_executable(newreposit src/main.cpp) сделайте чтобы было просто add_executable(newreposit main.cpp) и всё будет работать.
спасибо, а с чем связанно
у меня почему-то ошибка - CMake Error: The source directory "C:/Users/Компьютер/OneDrive/Documents/MyProgect/BattleCity" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
содержимое cmake - cmake_minimum_required(VERSION 3.22.2 FATAL_ERROR)
proqect(BattleCity)
add_executable(newreposit main.cpp)
Буду ставить лайки под каждое видео и расскажу друзьям про такой замечательный канал))
Благодарю!)
А что можно сделать, если сmake отказывается билдить проект, так как у меня в названии проекта использовалась цифра?
Новогоднего настроения!
А чо через интерфейс cmake нельзя получить exe файл?
Через консоль мы это сделали(т.е. не открывая visual studio ) а через интерфейс?
Тут ещё до заголовка проекта надо указать компилятор, который вы использовать будете. В Линуксе это обязательно! Иначе по дефолту она установит самый старый допотопный вариант... и получится фигня... Если конечно вас это не устраивает... Но было бы странно если бы устраивало. В винде такого нет и там настраивать версию компилятора нет необходимости...
Бро, а как компилировать через minGw? У меня vscode
Актуально спустя 4 года
Спасибо тебе добрый человек
А что можно сделать, если всё прелестно работает, но если делать запуск vs после генерации сборки в cmake, то вылезает: неизвестная ошибка, доп инф в файле ActivityLog.xml?
Возможно, что просто выбран не тот проект для запуска по умолчанию. Нужно нажать правой кнопкой по проекту BattleCity и сделать его по умолчанию (Set as startup project)
Вот всё конечно хорошо, CMake это прекрасно и git тоже. Но единственный вопрос: зачем всё это в уроках по OpenGL?
Всё получалось до момента пока я не написал Cmake .. и тут понеслась: Cmake error: The sourse directory "деректория" dose not appear to contain CMakeLists.txt Оно, даже build - папку в корневой директорие создало, но она пустая
значит в папке проекта нет файла CMakeLists.txt) И кстати надо запускать cmake .. из папки build, потом параметр .. делает переход на директорию вверх и ищет там CMakeLists.txt
@@SimpleCodingChannel В папке batle-city я создал CimakeLists.txt.txt прописал в нём всё что надо, но только сейчас заметил, что в нём .txt - 2 раза написано
Почему у меня в git bash всегда в конце файла пишется main, а не master
у этого чела в целом все полная хуита, я смотрел плейлист по Game Emgine, сделал все в точности также, но ничего не работает. Можешь не сидеть тут, я в пустую потратил кучу времени на это дерьмо
@@WhiteCap-z1e согл, у него ещё есть курс по сmake полная фигня
Мозгов не хватает понять что ветку master в main переименовали?
А всё почему? Правильно, очередной выпендрёж
- GitHub wanted to remove technical jargon like master to support 'Black lives matter' protests.
При написании команды cmake --build . --config Start у меня возникает ошибка: Не удается найти средства сборки для Visual Studio 2010 (набор инструментов платформы = "v100"), а у меня Visual Studio 2017. Я так понимаю мне нужно удалить мою Visual Studio и поставить 2010-ую или можно как-то установить средства сборки 2010-ой ?
похоже на то, что по умолчанию стоит конфигуратор на старую студию, возможно она когда-то не полностью была удалена. Можно вручную выбрать конфигуратор параметром G: cmake .. -G "Visual Studio 15 2017 Win64" (15 - это порядковый номер 2017 студии)
либо же просто через графический интерфейс: ua-cam.com/video/8YPuEQ6BPe8/v-deo.html
блин, у меня при проверке версии cmake ничего не находит
всё нормально, пришлось перезайти в консоль
Release - так и не создалась! Всё пишу, что и ты, перепроверяю, но если пишу Cmake .. - то - после последнего, done - пишет еще, что Cemake Error at CimkeLists.txt: 5 (add_executable) Unknown Cmake command "add_executable" .. Я так понял, что проблема в команде прописанной в CimakeLists.txt?
команда точно должна быть рабочей, скорее всего где-то опечатка, попробуй просто скопировать полный проект из github, и проверить еще раз на нем
У меня проблема когда компилирую в vs он не видит полноценный путь место OpengGlLearn\build он видит OpengGlLearn\build\ALL_BUILD
Проблема в том, что CMake делает проектом по умлочанию ALL_BUILD. Нужно в VS нажать на нужный проект правой кнопкой и выбрать Set as Startup Project, тогда при F5 будет запускаться он, а не ALL_BUILD.
Через графический интерфейс симейка - тоже жесть - Error in configuration proces
Когда я создаю файлы из строки, например гит игнор, у меня в папке создается просто файл в текстовом формате, от которого толку ноль. Когда у вас сразу в нужном формате создает все в т.ч. и cpp файлы, который я вручную создавал из visual студии. Как сделать, чтобы они так же, как у вас сразу создавались в нужном формате?
Возможно не включено показывать расширения файлов
pk-help.com/workstation/file-extension-windows10
@@SimpleCodingChannel не сработало
@@SimpleCodingChannel обязательно build в гитигнор или можно пропустить этот этап?
можно пропустить, это просто для удобства, чтобы постоянно его не коммитить
там обязательно должно быть название файла ".gitignore", в корневой папке и без всяких разрешений в конце
Спасибо большое за урок. Такая проблема: cmake прекрасно билдит проекты через GUI и стандартную cmd, но не работает в MSYS2 (утилита тупо не видит cmake). Может, кто в курсе проблемы?
Точно не подскажу, но вроде есть какая особая версия MSYS2 с cmake'ом
www.msys2.org/docs/cmake/
@@SimpleCodingChannel спасибо)
cmake ..
не выполняется пишет что не удается найти указаный файл
Можно попробовать вручную добавить путь до cmake.exe в переменные среды окружения PATH
пытался в файле CMakeLists.txt с помощью команды set напрямую указать путь к компилятору MSVC - после этого исчезла ошибка CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage. Но, чтобы я не пытался предпринять - прописывать через set путь компилятора для CMAKE_C_COMPILER - все равно выдает ошибку:"-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19042.
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:6 (project):
No CMAKE_C_COMPILER could be found."
прописывал я перед project(BattleCity) следующие две строки:
set( CMAKE_CXX_COMPILER "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.30.30705/bin/Hostx64/x64/cl.exe")
set( CMAKE_C_COMPILER "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.30.30705/bin/Hostx64/x64/cl.exe")
upd:
попытался через командную строку ввести cmake -D CMAKE_C_COMPILER="C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.30.30705/bin/Hostx64/x64/cl.exe" /c/git/BattleCity/ - директория, в которой находится CMakeLists.txt - та же ошибка
По идее при установке VS все должно находиться автоматически, без ручного указания пути к компилятору. Скорее всего при установке не были выбраны какие-то нужные опции. Можно попробовать переустановить VS, обычно помогает. А в самом VS, если создать C++ проект, все нормально работает?
@@SimpleCodingChannel создал проект с CMake C++ в самом VS и все сработало, вот что было в выходных данных при создании проекта:
1> [CMake] -- The C compiler identification is MSVC 19.30.30709.0
1> [CMake] -- The CXX compiler identification is MSVC 19.30.30709.0
1> [CMake] -- Detecting C compiler ABI info
1> [CMake] -- Detecting C compiler ABI info - done
Просто, так как у меня очень мало опыта, хотелось бы все повторять по видео, а если у меня не получается создать проект CMake через командную строку, сильно ли это повлияет на восприятие дальнейших видео по этой теме на вашем канале?
Никак повлиять не должно, не обязательно все делать через командную строку. По сути CMake все равно нам нужно только лишь, чтобы создать проект для Visual Studio. Ну и еще он копирует ресурсы, но это можно сделать и вручную
Привет. Когда пытаюсь конфигурировать в CMake выдает ошибку: Error in configuration process, project files may be invalid. Делал всё как по уроку. В чём может быть проблема?
При этом используя Git Bush всё работает нормально.
Даже не знаю в чем проблема... Как будто Cmake потерял привязку к конфигуратору. Можно попробовать переустановить Visual Studio и сам Cmake
@@SimpleCodingChannel А проблема то во мне :)
Как оказалось у меня же Visual Studio 16 2019, а я по уроку следовал и выбрал VS 15 2017. Вот такие дела. В любом случае, спасибо что ответил
CMake Error at CMakeLists.txt:3 (project):
No CMAKE_C_COMPILER could be found.
вот такую ошибку выдает
какая у вас система и компилятор? Устанавливали Visual Studio?
@@SimpleCodingChannel
Window 7 home, VS 16 2019
похоже на то, что с VS не установился C компилятор. Попробуйте создать обычный пустой сишный проект, может он предложит доустановить его. Либо же можно вручную указать путь к нему, опция -D CMAKE_C_COMPILER="/path/to/your/c/compiler/executable", в моем случае это C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.20.27508/bin/Hostx64/x64/cl.exe
Видео ролик отличный спасибо большое! Я решил запустить файл exe так, то есть кликнув на него и он не запускается, с чем это связано?
Благодарю! Какой именно файл exe?
@@SimpleCodingChannel ну именно в файле build там есть папка Release и в ней exe я его пытаюсь запусти не получается
Выдает какую-то ошибку или запускается и сразу закрывается?
@@SimpleCodingChannelничего не выдает, то есть я кликаю по нему и никакой реакции, никаких ошибок ничего не выскакивает
А если запустить в проекте через visual studio или через командную строку? Может программа выполняется и сразу выходит, закрыв консоль. Тогда можно в конце перед выходном из main поставить std::cin.get();
Привет, а как перейти в консоль я просто скачал w64devkit в нем лежит mingw64, какой же тяжёлый cmake
Клава на синих свичах?
На зеленых) но я потом ее сменил на бесшумную
@@SimpleCodingChannel я про зелёные не слышал))
@@cyrilanisimov вот такая
www2.razer.com/eu-en/store/blackwidow-green-switch
@@SimpleCodingChannel а, точно, рэйзер) до сих пор не пойму, почему они ставят кликающие свичи в игровые клавы)) У чери игровые - красные, которые линейные.
Я потом пожалел, что взял ее, клики слышатся по всей квартире)
Ролик полезный, но клавиатуру я бы об стену размазал..
cmake --version
bash: cmake: command not found
cmake при установки не был внесен в переменные PATH, туда нужно добавить путь до него: C:\Program Files\CMake\bin
как добавить можно посмотреть тут: zametkinapolyah.ru/zametki-o-poleznyx-programmax/path-v-windows.html
@@SimpleCodingChannel У меня похожая проблема, но только в git bush. В cmd команды cmake --version и тд.. работают. Удалось запустить cmake.. через cmd. В git bash же выдает : command not found. Погуглил про переменную PATH, но в ней уже был добавлен путь к cmake.
Получилось разобраться. Скачивал вроде бы 64 разрядную версию, но почему-то запускался cmake только с 32 разрядной командной строки. Если запустить Git Bush от имени администратора, то все заработает))
Здравствуйте! почему то мне выводит $ cmake --build . --config Release
Microsoft (R) Build Engine version 16.11.0+0538acc04 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
и папка release не появляется
У кого такая ошибка после запуска команды , то рекомендую попробовать всё заново следуя по инструкции в этом ролике --> ua-cam.com/video/qKXzmd_P8PE/v-deo.html .Мне помогло, надеюсь и вам поможет.
У меня тоже ошибка.
какого рода ошибка? как правило проблемы возникают с поиском компилятора, тут может быть проблема из-за Visual Studio
@@SimpleCodingChannel У меня стоит VS2019 и VS2010, и тем и тем компилил.
Ошибка:
Selecting Windows SDK version 10.0.18362.0 to target Windows 6.1.7601.
The C compiler identification is MSVC 19.27.29111.0
The CXX compiler identification is MSVC 19.27.29111.0
Detecting C compiler ABI info
CMake Error at C:/Program Files/CMake/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake:48 (try_compile):
Failed to open
C:/Users/User/Desktop/cmake/buil/CMakeFiles/CMakeTmp/CMakeLists.txt
Permission denied
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)
CMakeLists.txt:3 (project)
Detecting C compiler ABI info - failed
Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64/cl.exe
CMake Error at C:/Program Files/CMake/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake:53 (try_compile):
Failed to open
C:/Users/User/Desktop/cmake/buil/CMakeFiles/CMakeTmp/CMakeLists.txt
Permission denied
Call Stack (most recent call first):
CMakeLists.txt:3 (project)
Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64/cl.exe - broken
CMake Error at C:/Program Files/CMake/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake:66 (message):
The C compiler
"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64/cl.exe"
is not able to compile a simple test program.
It fails with the following output:
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:3 (project)
Configuring incomplete, errors occurred!
меня тут смущает строчка Permission denied, возможно что-то с правами пользователя в windows. Можно попытаться из другой папки запустить, куда точно есть доступ, или запустить с правами администратора
@@SimpleCodingChannel вау! и правда, перенес в мои документы все заработало, спасибо ^_^
-- Building for: NMake Makefiles
CMake Error at CMakeLists.txt:3 (project):
Running 'nmake' '-?' failed with: Не удается найти указанный файл CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
после выполнение команды cmake ..
У меня такаяже ошибка была... но к счатью я не пользуюсь nmake-ом и просто переключил генератор на обычный make и все заработало...
Потом командой make собираю проект через mingw gcc
@PlutonosVEt
(В видео используется генератор visual Studio но для его использования нужна ida). у вас установлен компилятор?
Если да попробуйте использовать подходящий генератор.
К примеру для MinGW gcc это генератор "MinGWfiles"
Cmake -G"MinGWfiles" (И Путь к папке, к примеру ) C:/user/project)
Также вместо команды Cmake --build
Используйте просто make
.p.s. Nmake утилита сборки выбрав её Cmake будет использовать генератор для этой системы, она стоит по умолчанию. И скорее всего работать не будет...
@PlutonosVEt я тагже проходил. Пока книгу не скачал...
@PlutonosVEt я спросил у chatgpt как собрать проект при помощи cmake и мне это помогло