18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
|
|
1 | |
Как работает CMake?17.09.2015, 22:57. Показов 10987. Ответов 23
Метки нет (Все метки)
Вы мне можете объяснить, чем занимается CMake конкретно на пальцах?
Получается, допустим, у нас есть папка с исходными файлами .cpp, мы можем выбрать конфигурацию, настроить для какой платформы будем компилить исходники, и т.о. мы можем скомпилить проект под Linux, Windows, MacOS и другие платформы как это делает Qt? По сути содержит пути до компиляторов и просто выполняет .bat файл с надстройками, как что и где компилить? Спрашиваю потому что сейчас пытаюсь установить библиотеку libTorrent, для нее нужно иметь установленные OpenSSL и Boost. До этого имел опыт работы с CMake, когда делал проект с использованием OpenCV. Ее тоже нужно было собирать, но вместе с исходниками шли Prebuilt Binaries, заранее скомпиленные. Другими словами, какое именно назначение у CMake? Можно ли пользоваться ей для простой компиляции своего исходника без IDE, И является ли это кроссплатформенным решением
0
|
17.09.2015, 22:57 | |
Ответы с готовыми решениями:
23
Сборка проекта cmake с вложенными cmake [CLion] настройка дебагера на Windows 10. Не работает дебаг с профилем Visual Studio или CMake с профилем MinGW Как в CMake сделать окна нового вида Cmake как добавить папку с файлами(.хейдеры и .спп) |
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
17.09.2015, 23:22 | 2 |
да.
не совсем бат, но смысл примерно такой и есть. независимость ни от платформы, ни от файлов проекта целевой ИДЕ. например, на работе стоит линукс, а разработка в qtCreator а дома - виндовс, и студия. у этих ИДЕ разные файлы проекта, разные настройки. разные компиляторы. что бы поработать в студии над проектом, который изначально писался в qtcreator мне пришлось бы потратить уйму времени на создание и настройку файлов проекта для студии. но так как сценарий сборки был на cmake, то это уже не является проблемой. я просто обновляю рабочую копию из репозитория. и прошу cmake сгенерировать мне проект для нужной мне ИДЕ. и спокойно работаю. да да
4
|
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
|
|
17.09.2015, 23:37 [ТС] | 3 |
все понятно, спасибо за разъяснения
но у меня остались еще пару вопросов. мне немного непонятно, в силу своей неопытности, как это работает если я пишу на WinApi, разрабатываю в Windows7 x64, у меня есть .cpp и .h файлы, я открываю CMake, прописываю настройки и пр., но хочу получить, например исполняемый файл или дрова для Linux, как происходит трансформация между функциями WinApi и функциями для линуксовых осей? Там же все это учтено? и все тоже самое для MacOS? я просто поверить не могу, что так все просто например, некоторые функции специфичны только для своих операционок. и библиотеки бывают только на винду, например. DirectX? не смогу успокоиться, пока это не пойму, спасибо
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
17.09.2015, 23:45 | 4 |
Сообщение было отмечено igor_petrov как решение
Решение
хех... вы не поняли.
cmake - кросплатформенной средство построения файлов проектов для целевых ИДЕ, либо сборки продукта из исходников. но cmake за вас исходный код писать не будет. и если ваш исходный код не кросс-платформа сам по себе, то естественно под чужерожной платформой это не взлетит. то есть, если вы использовали винапи, значит прибили свой проект гвоздями к виндовс. под виндовс вы сможете попросить cmake собрать проект руками компиляторов вижал студии, или mingw вы сможете получать файлы проекта для вижал студии, или работать в qtcreator но поскольку винапи - то о линуксах уже речи не будет. cmake сможет сгенерировать вам мэйк файл проекта для сборки линуксовым gcc это не проблема. просто линуксовый gcc пошлет нафиг ваше винапи.
3
|
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
|
|
17.09.2015, 23:51 [ТС] | 5 |
теперь все встало на свои места, спасибо за помощь!
0
|
Заблокирован
|
|
18.09.2015, 13:42 | 6 |
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
18.09.2015, 13:46 | 7 |
CMake может из описания сборки сгенерировать проект VisualStudio.
Makefile - это тоже целевой файл. В смысле
2
|
Заблокирован
|
|
18.09.2015, 14:55 | 8 |
DrOffset, слушай, где - только не искал какого - то автоматического способа перегонки проекта на MakeFile в проект VisualStudio, ни где нет, если только вручную... Может подкинешь линк на утилитку или на док с инфой?
P.S.: на codeproject валяется какой - то левый скрипт, которые ни хрена не работает.
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
18.09.2015, 15:53 | 9 |
Я таких не знаю.
Да и VS в работе не использую, т.к. под win не программирую.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
18.09.2015, 19:35 | 10 |
нет.
он может построить целевой файл проекта. на основании собственного сценария сборки: CMakeLists.txt *.cmake но он не занимается конвертацией уже существующих файлов проекта. оно? http://www.codeproject.com/Tip... plus-Proje гляньте ещё сюда: https://msdn.microsoft.com/en-... s.60).aspx и сюда: http://www.bordoon.com/cpluspl... ration.pdf
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
23.09.2015, 21:08 | 11 |
Скачал из репозитория библиотеку для виндовс версию и там пишут что нужно использовать CMake чтобы построить примеры, а как использовать CMake?
0
|
Неэпический
|
|
23.09.2015, 21:15 | 12 |
делаем директорию для билда, заходим в нее, выполняем там
Код
cmake путь_к_исходникам_с_CMakeLists.txt Добавлено через 56 секунд Можете скачать cmake-gui, для удобства
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
23.09.2015, 22:21 | 13 |
обычно, с библиотекой идут файлы документации,
где описывается, как собирать библиотеку. вам лишь нужно запустить cmake, скормив ему нужные параметры. пример батника для запуска из командной строки: Код
echo [ LAUNCH CMAKE ] ... set COMMANDLINE=cmake -H"%SOURCE_DIRECTORY%" -B"%PATH_BUILD%" -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%BUILD_TYPE% if not "%TOOLSET%"=="" ( set COMMANDLINE=%COMMANDLINE% -T"%TOOLSET%" ) ::@echo [COMMAND] %COMMANDLINE% set PATH=%PATH_CMAKE%;%PATH% %COMMANDLINE% exit /b SOURCE_DIRECTORY - путь к файлу CMakeLists.txt PATH_BUILD - путь к каталогу, в котором будет созданы файлы проекта целевой ИДЕ. например, в этом каталоге cmake может создать проект вижал студии GENERATOR - определяет что именно за файлы проекта хотим получить. например, Visual Studio 14 - означает, что нужны файлы проекта для 2015 вижал студии -DCMAKE_BUILD_TYPE=%BUILD_TYPE% позволяет установить стартовые значения некоторых переменных. в данном случае, переменная CMAKE_BUILD_TYPE отвечает за конфигурацию (Debug/Release/etc) Код
if not "%TOOLSET%"=="" ( set COMMANDLINE=%COMMANDLINE% -T"%TOOLSET%" ) например, для вижал студии можно указать CTP_Nov2013 - экспериментальный компилятор 2013 студии с улучшенной поддержкой разных фич c++1y v120_xp - компилятор с поддержкой windows xp ну и тп, их там множество может быть самых разных. в общем, вам нужно почитать документацию к вашей библиотеке, понять какие могут быть параметры сборки. и запустить cmake указав эти параметры. так же, вы можете воспользоваться cmakeGUI, и в удобном гуевом интерфейсе прописать все необходимые параметры. тогда вам не придется вводить их из командной строки.
2
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
23.09.2015, 22:32 | 14 |
та там с ГУИ идет, два пути указываешь путь к исходнику и путь out и запускаешь, появляются файлы решения и файлы проектов для студии. Открываю sln файл компилиру проект с примером и ошибки вылазять. Что то не то ))
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
23.09.2015, 22:36 | 15 |
да это нормально.
сборка чужих библиотек часто выливается в какие то приседания, и танцы с бубном. скиньте линк на библиотеку.
1
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
23.09.2015, 22:55 | 16 |
https://cefbuilds.com/ , самая последняя для win32
Добавлено через 11 минут Ошибка вылазит и таких много (182): error C2220: предупреждение обработано как ошибка - файл "object" не создан Добавлено через 53 секунды 1>C:\Users\neo\Downloads\cef_binary_3.2494.1321.ge343da7_windows32(1)\cef_binary _3.2494.1321.ge343da7_windows32\include/base/cef_thread_collision_warner.h(182): error C2220: предупреждение обработано как ошибка - файл "object" не создан 1>C:\Users\neo\Downloads\cef_binary_3.2494.1321.ge343da7_windows32(1)\cef_binary _3.2494.1321.ge343da7_windows32\include/base/cef_thread_collision_warner.h(182): warning C4481: использовано нестандартное расширение: спецификатор переопределения "override" 1>C:\Users\neo\Downloads\cef_binary_3.2494.1321.ge343da7_windows32(1)\cef_binary _3.2494.1321.ge343da7_windows32\include/base/cef_thread_collision_warner.h(182): error C2220: предупреждение обработано как ошибка - файл "object" не создан 1>C:\Users\neo\Downloads\cef_binary_3.2494.1321.ge343da7_windows32(1)\cef_binary _3.2494.1321.ge343da7_windows32\include/base/cef_thread_collision_warner.h(182): warning C4481: использовано нестандартное расширение: спецификатор переопределения "override" 1>C:\Users\neo\Downloads\cef_binary_3.2494.1321.ge343da7_windows32(1)\cef_binary _3.2494.1321.ge343da7_windows32\include/base/internal/cef_bind_internal.h(2557): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "final" 1> И таких много
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
23.09.2015, 23:39 | 17 |
собрал 32 битный релиз в 2013 вижал студии.
но что характерно - ни ошибок, ни даже предупреждений. неужели, в кои то веки, кто-то оформил цивильную сборку? инструкция: 1. скачиваем: Windows 32bit 2015-09-08 CEF 3.2494.1321.ge343da7 (76MB) по ссылке: https://cefbuilds.com/ 2. распаковываем архив. я распаковал в каталог по имени cef: D:/dev/workspace/deploy/cef вы можете распаковать по любому другому пути. 3. в корень проекта закидываем батник по имени launchcmake.bat: его путь у меня получился: D:\dev\workspace\deploy\cef\launchcmake.bat 4. батник содержит скрипт: Код
@echo off cls rem --- стартовые параметры set PATH_CMAKE=C:\Program Files\CMake\bin set NAME_PRODUCT=cef set PATH_BUILD=%~dp0_build set SOURCE_DIRECTORY=%~dp0 set GENERATOR=Visual Studio 12 set BUILD_TYPE=Release set ADDRESSMODEL=32 set ACTION=build set SOURCE_DIRECTORY=%SOURCE_DIRECTORY:~0,-1% set PATH=%PATH_CMAKE%;%PATH% if "%ADDRESSMODEL%"=="64" ( set GENERATOR=%GENERATOR% Win64 ) call :view echo [ LAUNCH CMAKE ] ... set COMMANDLINE=cmake -H"%SOURCE_DIRECTORY%" -B"%PATH_BUILD%" -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%BUILD_TYPE% if not "%TOOLSET%"=="" ( set COMMANDLINE=%COMMANDLINE% -T"%TOOLSET%" ) @echo [COMMAND] %COMMANDLINE% %COMMANDLINE% exit /b rem -------------------------------------------------------------- rem -------------------------------------------------------------- rem -------------------------------------------------------------- :view echo PROJECT NAME ......... %NAME_PRODUCT% echo BUILD DIRECTORY ...... %PATH_BUILD% echo SOURCE DIRECTORY ..... %SOURCE_DIRECTORY% echo IDE .................. %GENERATOR% echo TOOLSET .............. %TOOLSET% echo BUILD TYPE ........... %BUILD_TYPE% echo ADDRESS MODEL ........ %ADDRESSMODEL% echo ACTION ............... %ACTION% exit /b rem -------------------------------------------------------------- rem -------------------------------------------------------------- rem -------------------------------------------------------------- Код
set BUILD_TYPE=Release set ADDRESSMODEL=32 ADDRESSMODEL определяет адресную модель: 32 или 64 битная сборка. в комплекте со сборкой идут предкомпилированные библиотеки. поэтому есть четкое разделение на 32 и 64 битную сборку. данный архив не поддерживает 64 сборку, поэтому выставлять 64 не имеет смысла. но если скачаете 64 архив, тогда этот же батник сможет настроить вам сборку для 64 битных продуктов 5. заходим в каталог с проектом, и запускаем батник. я работаю в FAR`e, и просто жмакаю enter на батничек через пару-тройку секунд у вас появиться подкаталог _build который будет содержать файлы проекта для 2013 вижал студии. 6. заходим в подкаталог _build и жмакаем enter на cef.sln запустится вижал студия, с уже открытым солюшеном. в нем будет 5 проектов: ALL_BUILD //<--- симейковская ботва cefclient cefsimple libcef_dll_wrapper ZERO_CHECK //<--- симейковская ботва 7. поскольку в батнике мы указали, что хотим Release, то в студии переключаем конфигурацию сборки на Release (по умолчанию студия всегда показывает Debug при запуске). 8. нажимаем на клавишу f7 9. наливаем чайку. компилять будет минуты 3 не меньше. 10. PROFFIT!!!! Добавлено через 14 минут такое впечатление, что у вас компилятор старый. не держит с++11. а вообще из документации к сборке:
1
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
24.09.2015, 00:53 | 18 |
а хз. может и не поддерживает, у меня visual studio 2010 крякнутая старая. А мб. ее можно как то обновить?
А у тебя 13 крякнутая? Щас VS 2013 крякнутую скача мб. и у меня заработает.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
24.09.2015, 00:56 | 19 |
наверное можно.
но я не пробовал. есть идея получше: https://www.visualstudio.com/r... io-vs.aspx 2015 комьюнити только в батнике нужно будет заменить: Код
set GENERATOR=Visual Studio 12 Код
set GENERATOR=Visual Studio 14 лицензионная
1
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
24.09.2015, 01:57 | 20 |
Это типо на халяву вместо экспресс? А там и MFC есть, в экспресс не было? Или там все есть только программы комерческие нельзя создавать?
Мб. пора windows7 сменить на windows10 ???? У меня 48 гигабайт на диске С, ни на что не хватает места. От подумываю переустанавливать и 100 выделить. Какую виндовс лучше выбрать, чтобы ресурсов не больше семерки жрала или 7 норм?
0
|
24.09.2015, 01:57 | |
24.09.2015, 01:57 | |
Помогаю со студенческими работами здесь
20
Как OpenSSL добавить в линковку CLion (используется cmake и mingw) Cmake + gtest CMake лист Cmake does not exist Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |