Представлен (https://blog.kitware.com/cmake-3-7-0-available-for-download/) релиз кроссплатформенного открытого генератора сценариев сборки CMake 3.7 (http://www.cmake.org/), выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. Код CMake написан на языке C++ и распространяется под лицензией BSD.
CMake примечателен предоставлением простого языка сценариев, средствами расширения функциональности через модули, минимальным числом зависимостей (нет привязки к M4, Perl или Python), поддержкой кэширования, наличием инструментов для кросс-компиляции, поддержкой генерации файлов сборки для широкого спектра систем сборки и компиляторов, наличием утилит ctest и cpack для определения сценариев тестирования и сборки пакетов, утилитой cmake-gui для интерактивной настройки параметров сборки.Основные улучшения (https://cmake.org/cmake/help/v3.7/release/3.7.html#new-features):
- Поддержка кросскомпилирования для платформы Android;- В генератор сценариев для сборочной системы Ninja добавлена поддержка языка Фортран;
- В команду "if()" добавлена поддержка дополнительных операций сравнения "LESS_EQUAL", "GREATER_EQUAL", "STRLESS_EQUAL", "STRGREATER_EQUAL", "VERSION_LESS_EQUAL", и "VERSION_GREATER_EQUAL";
- В команде "try_compile()" при оценке сигнатуры файла в сгенерированном тестовом проекте теперь учитываются флаги конфигурации, такие как "CMAKE_LANG_FLAGS_DEBUG" (ранее использовались только флаги по умолчанию);- Файлы инструментария теперь могут выставлять переменные окружения "CMAKE_EXE_LINKER_FLAGS_INIT", "CMAKE_SHARED_LINKER_FLAGS_INIT" и "CMAKE_MODULE_LINKER_FLAGS_INIT" для инициализации в кэше элементов "CMAKE_EXE_LINKER_FLAGS", "CMAKE_SHARED_LINKER_FLAGS" и "CMAKE_MODULE_LINKER_FLAGS" при первой активации языка;
- В CTest добавлены свойства "FIXTURES_SETUP", "FIXTURES_CLEANUP" и "FIXTURES_REQUIRED";
- Прекращено распространение с сайта проекта исполняемых файлов CMake для архитектуры i386 Linux;
- Из поставки удалены файлы "cmake-indent.vim", "cmake-syntax.vim", и "cmake-help.vim", вместо которых рекомендуется использовать сценарии от проекта vim-cmake-syntax;
- Прекращена поддержка самосборки CMake на системах с компиляторами
Visual Studio 7.1, Visual Studio2005 и MinGW.org mingw32 (следует использовать Visual Studio 2008, MSYS2 mingw32 и mingw64). Поддержка данных компиляторов для формирования сценариев сборки в других проектах сохранена.URL: https://blog.kitware.com/cmake-3-7-0-available-for-download/
Новость: http://www.opennet.me/opennews/art.shtml?num=45483
А существует генератор генератора сценариев сборки?
qmake
так это cmake и есть, оно генерирует сценарии для make. Есть ещё генераторы из различных проприетарных форматов в сmake.
А кто-нибудь проверял исходный код компиляторов? И чем вообще компилируются компиляторы?
Одним из шагов проверки надежности компилятора является сборка его самим собой. Думаю вопрос закрыт?
Я взял исходники gcc и собрал их имеющимся бинарным gcc. Само по себе это конечно здорово и увлекательно, но что это говорит с точки зрения надежности компилятора? Помимо того, что я могу собрать gcc версии A gcc-ой верии B.
После сборки и установки версии B собери версией B ещё раз исходники версии B.
Я вам скажу по секрету, gcc собирает себя дважды (или даже трижды, уже не помню). Первый раз - вашей локальной версией gcc. Второй раз - собранной версией на первом шаге. Третий раз - собранной на втором шаге, после чего, вроде, проверяется, что вторая и третья версия эквивалентны.
При сборке г-цы-цы г-ц-цой и при ее кросскомпиляции часто --disable-bootstrap добавляют чтобы собирать только один раз
> При сборке г-цы-цы г-ц-цой и при ее кросскомпиляции часто --disable-bootstrap добавляют чтобы собирать только один разДа, только не Абрам, а Мойше, не на скачках, а в преферанс, не в Лондоне, а в Житомире, не 20 тыс., а 20 рублей и не выиграл, а проиграл.
А что такое надежность компилятора? Он собрал вашу программу или нет? Собственно, о чем переживания?
Компиляторы тоже люди пишут, и в них могут встречаться различные ошибки, к примеру неверная трансляция определенного участка кода в ассемблер, и получится так что программист вроде все сделал правильно а программа не компилируется. Для предотвращения подобных случаев и существуют автоматические системы тестирования, а сборка компилятора самим собой это одна из традиционных проверок любого компилятора.
Вручную скомпилируй TCC. Затем откомпилируй PCC полученным TCC. Затем откомпилируй GCC полученным PCC. И наслаждайся.
> Одним из шагов проверки надежности компилятора является сборка его самим собой.
> Думаю вопрос закрыт?На тьюринговской лекции Кен Томпсон рассказал, как в качестве эксперимента внедрил в исходный код компилятора Си специальный функционал, который внедрял дополнительный код в компилируемые программы в том числе и сам компилятор. После этого он изменил зловредный код таким образом, чтобы его наличие в исполнимом файле не требовало наличия в исходном и поэтому не могло быть обнаружено просмотром исходников.
Это лишь забавный пример того, что вопрос несколько сложней, чтобы его так просто закрывать.
Это, пожалуйста, унесите на винфак. Там студия внедряет сбор телеметрии в твою программу, если специально это не предотвратить. Интегрирует это с нашумевшим общесистемным сбором данных о пользователе
Когда в 1983 Кен Томпсон на пару с Деннисом Ритчи получал Тьюринговскую премию за разработку UNIX ни о какой Windows с Visual Studio, как Вы понимаете, речь не шла. Проблема несколько шире.
Они эту премию получили за соооовсем другое! :)
А та проблема о чём ты пытаешься говорить - есть только на закрытых платформах.
Да даже и там - мсявок вот за руку поймали :)Но безусловно, если булки расслабить то поимеют :)
> есть только на закрытых платформахДоооооо... Хоть сто раз пересобери мир, если в компиляторе изначально была закладка, она все сто раз перекочует в новый компилятор.
> Доооооо... Хоть сто раз пересобери мир, если в компиляторе изначально была закладка,
> она все сто раз перекочует в новый компилятор.Однако ж можно попользоваться Тюрингом против закладок.
1) Закладка может оказаться видима в каком-нибудь ассемблерном листинге и дебагере. Предусмотреть все такие фокусы програмера не то что невозможно, НО довольно сложно.
2) Програмер может делать достаточно нестандартные вещи типа кросскомпила или сборки программы без рантайма (nostdlib). И тут вредительский код делает допустим файловые операции. А у нас - обана - вообще нету файловых операций. Что будет дальше? Скорее всего линкер скажет случилась что какая-то фигня и конструкция будет запалена. Наверное это тоже можно заделать в закладке но закладка стнет жирной и бажной и станет создавать аномалии лишний раз.Тюринг работает в обе стороны: как на атакующего так и на защищающегося. Атакующий может сделать что-то чего защищающийся не предосмотрел. Защищающийся точно так же может создать ситуацию которую атакующий не предусмотрел.
Так не пересобирай мир закрытыми компиляторами. И да, достаточно много глаз смотрят исходники GCC.
> Они эту премию получили за соооовсем другое! :)Ознакомьтесь:
http://amturing.acm.org/award_winners/thompson_4588371.cfm> With Dennis M. Ritchie, for their development of generic operating systems theory
> and specifically for the implementation of the UNIX operating system.
>внедрил в исходный код компилятора Сизачем так сложно? простенький файловый вирус в gcc и всё
> зачем так сложно? простенький файловый вирус в gcc и всёИ вот собираю я gcc'ом допустим бутлоадер какой, где такого понятия как файл вообще нету. И как это должно работать?
Если в компилируемом файле нет обращений к файловой системе то не внедрять ничего.
Хоть я довольно подозрительный человек, но даже у меня не возникало подозрений к GCC или Clang тем более что код этих проектов открыт и при большом желании можно провести их аудит (насколько это затратно это уже другой вопрос), да и разработчики компиляторов частенько заглядывают под капот проектов конкурентов, а при обнаружении подобных закладок молчать бы они точно не стали.
Значит, Вы не такой уж и подозрительный человек. Есть такой конкурс http://underhanded-c.org . В отличии от конкурса обфусцированного кода здесь ценят прилично выглядящий, хорошо написанный код, который делает не совсем то, что можно ожидать. Закладки, оформленные в таком стиле не так просто обнаружить.Это не означает, что нечто подобное внедрено в gcc.
"Раскрутка компилятора"
https://ru.wikipedia.org/wiki/%D0%A0%D0%...
> И чем вообще компилируются компиляторы?Традиционно - самим собой :)
*меланхолично
ReactOS - это не то, что стоит заносить в достижения... В отличие от KDE или Blender...
> *меланхолично
> ReactOS - это не то, что стоит заносить в достижения... В отличие
> от KDE или Blender...С такой альтернативной логикой прохождение юнит-тестов надо вообще заносить в регресс
> С такой альтернативной логикой прохождение юнит-тестов надо вообще заносить в регрессПрактика показала что можно зарелизить жутко бажный продукт пройдя однако ж все юниттесты.
А реактос показал что можно 17 лет страдать хней, запуская ОС на виртуалочке. Совсем как живое, только не работает. Настолько что разработчики азрабатывают этот крап в уютной максималке с вьюжлостудией. Тьфу.
но вы допустили ошибку в слове ректумтос
Какое отношение Ваш полет бреда имеет к CMake?
Это скрытая реклама.
Не пойму почему так хейтят ReactOS, ведь вроде его разработка приносит пользу проекту Wine который иногда бывает весьма полезен. Да и вообще если проект разрабатывается значит приносит какие-то профиты, редко что-то убыточное держится исключительно на одном энтузиазме.
Wine НЕ берет ничего из ReactOS.
ReactOS works with the WINE project to share as much programming effort as possible. ReactOS depends on Wine mainly for user mode DLLs. Where appropriate, patches to Wine are also submitted by the development team, and patch contributors are often directed to Wine if it is felt that the patches would benefit them.
Как так, про cmake-server в списке основных изменений написать забыли!
> В команду "if()" добавлена поддержка дополнительных операций сравнения "LESS_EQUAL", "GREATER_EQUAL", "STRLESS_EQUAL", "STRGREATER_EQUAL", "VERSION_LESS_EQUAL", и "VERSION_GREATER_EQUAL"Синтаксис по прежнему кошмарен.
-DLOOONGCAT ……………………
-DLONGCAT_IS_LOOOOOOOOOOOOOOOOOOONG
первый релиз без презрительных каментов о превосходстве над autotools. По крайней мере самое любимое слово адептов 'autocrap' уже не встречается. Надеюсь, сменили область приложения усилий.