Как собрать программу из исходников windows
В этом пошаговом руководстве приводятся инструкции по созданию программы на языке C++ в стиле "Hello, Wolrd" в текстовом редакторе с последующей компиляцией из командной строки. Если вы хотите попробовать интегрированную среду разработки Visual Studio вместо командной строки, см. статью Пошаговое руководство. Работа с проектами и решениями (C++) или Использование интегрированной среды разработки Visual Studio для разработки приложений для настольных систем на языке C++.
В этом пошаговом руководстве вместо ввода показанного кода можно использовать собственную программу на языке C++. Также можно использовать пример кода C++ из другой статьи справки.
Предварительные требования
Для выполнения этого пошагового руководства необходимо установить Visual Studio и дополнительную рабочую нагрузку Разработка настольных приложений на C++ или Build Tools командной строки для Visual Studio.
Visual Studio — интегрированная среда разработки (IDE). Она поддерживает полнофункциональный редактор, диспетчеры ресурсов, отладчики и компиляторы для многих языков и платформ. Доступные версии включают бесплатный выпуск Visual Studio Community Edition, и все они могут поддерживать разработку на C и C++. Сведения о скачивании и установке Visual Studio см. в статье Установка поддержки C++ в Visual Studio.
Build Tools для Visual Studio устанавливают только средства, библиотеки и компиляторы командной строки, необходимые для сборки программ C и C++. Это идеальный вариант для создания заданий и упражнений, а установка выполняется относительно быстро. Чтобы установить только средства командной строки, найдите Build Tools для Visual Studio на странице загрузки Visual Studio.
Прежде чем можно будет выполнить сборку программ C или C++ в командной строке, убедитесь, что эти средства установлены и к ним можно получить доступ из командной строки. Visual C++ имеет сложные требования к среде командной строки для поиска используемых средств, заголовков и библиотек. Visual C++ нельзя использовать в простом окне командной строки без предварительной подготовки. К счастью, Visual C++ устанавливает ярлыки для запуска командной строки разработчика, для которой настроена среда для сборок из командной строки. К сожалению, имена ярлыков командной строки разработчика и места их расположения отличаются практически во всех версиях Visual C++ и в различных версиях Windows. Первая задача пошагового руководства — найти нужную командную строку.
Ярлык командной строки разработчика автоматически задает правильные пути для компилятора и средств, а также для всех необходимых заголовков и библиотек. Эти значения среды необходимо задавать самостоятельно, если используется обычное окно командной строки. Дополнительные сведения см. в статье Использование набора инструментов MSVC из командной строки. Рекомендуется использовать ярлык командной строки разработчика вместо создания собственного.
Открытие командной строки разработчика
Если вы установили Visual Studio 2017 или более поздней версии в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio (не приложение Visual Studio). Выберите элемент Командная строка разработчика для VS, чтобы открыть окно командной строки.
Если вы установили Microsoft Visual C++ Build Tools 2015 в Windows 10 или более поздней версии, откройте меню Пуск и выберите Все приложения. Прокрутите вниз и откройте папку Microsoft Visual C++ Build Tools. Выберите элемент Командная строка Native Tools x86 Visual C++ 2015, чтобы открыть окно командной строки.
Можно также ввести "командная строка разработчика" в строке поиска в Windows и выбрать командную строку, которая соответствует установленной версии Visual Studio. Откройте окно командной строки с помощью ярлыка.
Затем убедитесь в том, что командная строка разработчика Visual C++ настроена правильно. В окне командной строки введите cl и убедитесь в том, что выходные данные выглядят примерно так:
Возможно, существуют различия в текущем каталоге или номерах версий. Эти значения зависят от версии Visual C++ и установленных обновлений. Если приведенный выше результат похож на отображаемый, можно приступать к сборке программ C или C++ в командной строке.
В зависимости от версии Windows, установленной на компьютере, и конфигурации системы безопасности может потребоваться правой кнопкой мыши открыть контекстное меню для ярлыка командной строки разработчика и выбрать пункт Запуск от имени администратора, чтобы успешно выполнить сборку и запуск программы, созданной в этом пошаговом руководстве.
Создание файла исходного кода на языке Visual C++ и его компиляция из командной строки
В окне командной строки разработчика введите md c:\hello , чтобы создать каталог, а затем введите cd c:\hello , чтобы перейти к этому каталогу. В этом каталоге создаются файл исходного кода и скомпилированная программа.
В окне командной строки введите notepad hello.cpp .
Когда Блокнот предложит создать файл, выберите Да. Откроется пустое окно Блокнота, в котором можно ввести код для файла hello.cpp.
В окне блокнота введите следующие строки кода:
Это простая программа, которая выведет одну строку текста на экран, а затем завершит работу. Для сведения числа ошибок к минимуму скопируйте этот код и вставьте его в Блокнот.
Сохраните файл. В Блокноте, в меню Файл выберите Сохранить.
Поздравляем, вы создали исходный файл C++ hello.cpp, который готов к компиляции.
Вернитесь к окну командной строки разработчика. Введите dir в командной строке, чтобы получить список содержимого каталога c:\hello. Вы увидите исходный файл hello.cpp в списке каталогов, который выглядит примерно так:
Даты и некоторые другие данные будут отличаться на вашем компьютере.
Если файл исходного кода hello.cpp не отображается, убедитесь, что текущий рабочий каталог в командной строке — это созданный вами каталог C:\hello . Это должен быть каталог, в который вы сохранили файл исходного кода. Также убедитесь, что файл исходного кода был сохранен с расширением имени файла .cpp , а не .txt . Если открыть Блокнот из командной строки с помощью команды notepad hello.cpp , файл исходного кода автоматически сохраняется в текущем каталоге в виде файла .cpp . Если Блокнот открыть другим способом, его поведение также будет другим. По умолчанию Блокнот добавляет расширение .txt в новые файлы при их сохранении. Кроме того, файлы по умолчанию сохраняются в каталоге Документы. Чтобы сохранить файл с расширением .cpp в Блокноте, выберите Файл>Сохранить как. В диалоговом окне Сохранение файла перейдите к папке C:\hello в элементе управления иерархического представления каталогов. Затем с помощью раскрывающегося списка Сохранить как тип выберите все файлы (*. *). Введите hello.cpp в элемент управления "Поле ввода" Имя файла и нажмите кнопку Сохранить, чтобы сохранить файл.
В командной строке разработчика введите cl /EHsc hello.cpp , чтобы скомпилировать свою программу.
Компилятор cl.exe создаст OBJ-файл, содержащий скомпилированный код, а затем запустит компоновщик для создания исполняемой программы с именем hello.exe. Это имя отображается в строках информации, выводимой компилятором. Выходные данные компилятора должны выглядеть следующим образом:
Чтобы запустить программу hello.exe, в командной строке введите hello .
Программа выводит следующий текст и закрывается:
Поздравляем, вы скомпилировали и запустили программу C++ с помощью средств командной строки.
Следующие шаги
Этот пример "Hello, World" является самой простой программой C++. Реальные программы обычно имеют файлы заголовков, дополнительные исходные файлы и ссылки на библиотеки.
Вы можете использовать шаги, описанные в этом пошаговом руководстве по C++, для создания собственного кода, чтобы не вводить приведенный пример. Эти шаги также позволяют собрать множество примеров кода C++, которые можно найти в других местах. Вы можете разместить исходный код и собрать приложения в любом доступном для записи каталоге. по умолчанию интегрированная среда разработки Visual Studio создает проекты в папке пользователя в подпапке саурце\репос . более старые версии могут размещать проекты в папке documents \ Visual Studio < version >\Projects .
Чтобы скомпилировать программу с дополнительными файлами исходного кода, введите их все в командной строке, например:
cl /EHsc file1.cpp file2.cpp file3.cpp
Параметр командной строки /EHsc указывает компилятору на необходимость стандартной обработки исключений C++. В противном случае созданные исключения могут привести к неуничтоженным объектам и утечкам ресурсов. Дополнительные сведения см. в статье /EH (модель обработки исключений).
При указании дополнительных исходных файлов компилятор использует первый входной файл для создания имени программы. В этом случае выводится программа с именем file1.exe. Чтобы изменить имя на program1.exe, добавьте параметр компоновщика /out:
cl /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe
Чтобы автоматически перехватывать другие ошибки программирования, рекомендуется выполнить компиляцию с помощью порога предупреждений /W3 или /W4:
cl /W4 /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe
В компиляторе cl.exe есть множество дополнительных параметров. Их можно применять для создания, оптимизации, отладки и анализа кода. Чтобы просмотреть краткий список, введите cl /? в командной строке разработчика. Можно также выполнять компиляцию и компоновку отдельно и применять параметры компоновщика в более сложных сценариях сборки. Дополнительные сведения о параметрах компилятора и компоновщика и использовании см. в разделе Справочник по построению C/C++.
Для настройки и создания более сложных проектов в командной строке можно использовать NMAKE и файлы makefile, MSBuild и файл проекта или CMake. Дополнительные сведения об использовании этих средств см. в разделах Справочник по NMAKE, MSBuild и Проекты CMake в Visual Studio.
Языки C и C++ похожи, но имеют различия. Компилятор MSVC использует простое правило для определения языка, используемого при компиляции кода. По умолчанию компилятор MSVC рассматривает файлы с расширением .c как исходные файлы на языке С, а файлы с расширением .cpp — как исходные файлы на языке С++. Если указан параметр компилятора /TP, компилятор будет рассматривать все файлы как исходные файлы на языке С++ вне зависимости от расширения.
Компилятор MSVC содержит библиотеку времени выполнения C (CRT), которая соответствует стандарту ISO C99 с небольшими исключениями. Переносимый код обычно компилируется и выполняется, как ожидалось. Некоторые устаревшие функции библиотеки и несколько имен функций POSIX не рекомендуется использовать в компиляторе MSVC. Функции поддерживаются, но предпочтительные имена изменились. Дополнительные сведения см. в статьях Функции безопасности в CRT и Предупреждение компилятора (уровень 3) C4996.
Частенько нет необходимости запускать тяжеловесную IDE Visual Studio для компиляции небольших приложений, проведения каких-либо тестов кода, не требующего полномасштабной отладки. В подобных случаях можно оперативно собрать приложение в консольном режиме, используя возможности предоставляемые компилятором от Microsoft (cl.exe) и запускными модулями IDE (devenv.exe, msdev.exe). Далее приводится код файлов сценариев (cmd) интерпретатора командной строки Windows, который с небольшими изменениями каждый может настроить под себя, с учётом путей к Visual Studio в своей системе.
Компиляция cpp-файлов
- sVSPath — путь к основному каталогу Visual Studio т.е. к корневому каталогу, в котором содержатся все прочие подкаталоги для данной версии VS.
- gavIncPathMy — возможно для VS 11.0 потребуется задать свои пути к подключаемым заголовочным файлам.
2) в разделе «Пути к Boost» можно задать BOOST_ROOT — путь к коревому каталогу библиотеки Boost (если она у вас установлена).
3) в разделе «Настройка путей к подключаемым файлам» при необходимости можно задать пути к заголовочным файлам Qt, WinDDK.
4) в разделе «Настройка путей к библиотечным (.lib) файлам» задаются пути к файлам библиотек (в частности для WinDDK).
Реже может возникнуть необходимость настроить следующие параметры под конкретный проект:
iCompVer — версия используемого компилятора (6 — для VC6, 8 — VC8 (2005), 9 — VC9, 10 — VC10 (2010), 11 — VC11 (2012).
gavLibFilesQtShared — имена .lib-файлов для динамически подключаемой библиотеки Qt;
gavLibFilesQtStatic — имена .lib-файлов для статически линкуемой библиотеки Qt.
gavLibFilesCrt — имена .lib-файлов для стандартных динамических библиотек, используемых в Windows.
iModeQt — режим линковки библиотеки Qt.
gavCompMode — флаги режима компиляции (однопоточные, многопоточные и т.п.).
gavOptimize — флаги оптимизации кода компилятором.
Чаще всего приходится менять параметры:
gavSrc — имена файлов с исходным кодом, разделённые пробелом (если их несколько).
bLibQt — флаг (0/1) необходимости использовать библиотеку Qt при сборке приложения.
bLibCrt — флаг (0/1) необходимости использовать стандартные CRT-библиотеки Windows при сборке приложения.
bLibBoost — флаг (0/1) необходимости использовать библиотеку Boost при сборке приложения.
gavSubsystem — подсистема создаваемого приложения: CONSOLE — консольное, WINDOWS — с графическим интерфейсом.
В последнее время со сборкой JDK в Windows всё стало хорошо и приятно, поэтому поделюсь радостью и распишу, как это делается.
Каждый второй, кто пытается собрать что-то под Windows, получет глубокую психологическую травму, и заранее ожидает от сборки следующих эмоций:
Что касается JDK, если не сходить с пряничной дорожки, делать в точности как в этой инструкции, проблем не будет. Возможные проблемы обозначены в тексте.
Общий смысл происходящего: устанавливаем компиляторы (JDK8, Visual Studio 2013), среду сборки (GNU/Cygwin) и набор стандартных пакетов для неё, собираем из исходников Freetype, заливаем репозиторий JDK, configure, make, java -version.
Мы будем собирать Java и C++ (раз вы читаете эту статью, то, наверное, уже в курсе), поэтому на микроволновке лучше сборкой не заниматься. Нужна рабочая станция или ноутбук с нормальным процессором, и, желательно, SSD вместо жесткого диска для сборочной директории проекта. Кроме сборки, какое-то время потратится на скачивание исходника и установку Visual Studio.
Понадобится подключение к интернету и права администратора Windows. Проблемы пользователей корпоративной инфраструктуры, где всего этого нет, здесь не рассматриваются.
Устанавливаем JDK8
Устанавливаем Visual Studio 2013
(версия Express подойдёт).
Ссылка на загрузку. Если вы устанавливаете полную версию, то при установке вам дадут выбор компонентов: достаточно установить только те компоненты, которые относятся к C++ и Windows SDK.
При установке Express, никакого выбора не будет — к счастью, оно само устанавливает именно то, что нам нужно. Это выглядит как-то так:
После установки, обязательно нужно перезагрузить операционную систему.
Важно: нужно установить именно Visual Studio 2013. Не ниже потому, что о версии 2013 говорится в Build Readme. Не выше потому, что если попробовать провести сборку с установленной Visual Studio 2015, то сборщик JDK будет видеть компилятор, но будет ломаться с ошибкой:
Если заглянуть в config.log, становится понятна причина:
Если тупо сделать
то оно развалится:
Если кто-то в комментариях знает, как безболезненно починить эту ошибку и запуститься на 2015, буду очень благодарен. Неприятно быть залоченным на устаревшую версию компилятора, даже если она бесплатная.
Устанавливаем Cygwin.
Важно: сейчас принято использовать msys2 вместо Cygwin. К сожалению, сборка JDK тут же упадет с ошибкой:
Если попытаться прописать msys так же, как там прописан Cygwin, то ошибка меняется:
Если какой-нибудь герой в комменатриях расскажет, как правильно прописать msys, это было бы здорово.
Устанавливаем пакеты для Cygwin
описанные в Build Readme.
В скобках указана категория пакета, после знака "—" ради чего мы это ставим.
Назначение каждого экзешника можно почитать в мане, но чтобы собрать этого знать не нужно.
- binutils (devel) – ar.exe
- make (devel) — make.exe
- m4 (interpreters) — m4.exe
- cpio (utils) — cpio.exe
- gawk (base, interpreters) — gawk.exe
- file (base) — file.exe
- zip (archive) — zip.exe
- unzip (archive) — unzip.exe
- procps-ng (system) — free.exe
Для возмущенных таким большим набором зависимостей — скажите спасибо, что не заставили устанавливать Python и Ruby! :)
Качать make отдельно не нужно
В прошлых инструкциях часто предполагалось скачать и прописать свой make. По новейшим наблюдениям, делать этого не имеет смысла, того make что установился пакетом в Cygwin — вполне достаточно.
Более того, на официальном сайте лежит устаревшая версия make, поэтому с ней вы получите ошибку типа:
То есть, make вам придется или собирать вручную, или искать уже собранный на сомнительных файлопомойках, как когда-то мы подбирали на них rpm’ки.
Если собственный make вам действительно нужен, то чтобы его использовать, нужно прописать в configure параметр MAKE=/путь/до/make.exe . Да, другие параметры начинаются на --, например --with-freetype, а вот MAKE должен быть именно в таком виде.
DirectX SDK устанавливать не нужно
Если оно вам действительно нужно (Java 3D?), вы об этом знаете, и знаете что делать. Здесь инструкций не будет.
Собираем FreeType
Собирать FreeType обязательно, даже если очень не хочется и лично вам не нужно.
Там две группы загрузок: две вверху (Complete package и Sources), и шесть пониже (Binaries… Original source). Элемент Sources есть в обеих группах. Нам нужно скачать зипник элемента Sources из второй группы.
Замечание: Качает сто лет, что делать? Ничего не поделаешь, это Сорсфордж. В момент отображения таймера загрузки попробуйте успеть щелкнуть по ссылке try another mirror и выберите что-нибудь во Франции. Французы не жмотятся на скорость.
Нужно найти в дереве devenv.exe, и вначале убить всех его потомков. После этого можно убить и сам devenv.exe (до этого он просто не реагирует на команду умереть).
В Solution Explorer, правой кнопкой на проект freetype, properties. Указываем Output Directory: src/freetype/2.3.5/freetype-2.3.5/lib. Проверяем, что configuration type выставлен в Dynamic library (.dll)
Закрываем окно freetype Property Pages. Собираем проект через Build → Build solution.
Ключевой факт тут такой: теперь у нас в одной корневой директории (src/freetype/2.3.5/freetype-2.3.5) лежат и инклуды (src/freetype/2.3.5/freetype-2.3.5/include), и библиотеки (src/freetype/2.3.5/freetype-2.3.5/lib).
Заливаем исходники JDK из репозитория
Запоминаем, куда скачали (например: C:/opt/trees.py)
Важно! Согласно инструкциям отсюда:
Мы должны были бы загружать вот этот файл:
К сожалению, на момент написания статьи, интеграция этого экстеншена с новой версией Mercurial сломана. Есть следующий баг, с приложенным патчем:
Чтобы вам не патчить trees самостоятельно, я пропатчил его, и выложил здесь:
В будущем, когда этот тикет будет закрыт, стоит использовать основную версию. Если вы читаете эту инструкцию, когда тикет уже закрыт – напишите мне, я исправлю этот пункт.
Так как Windows плохо относится к созданию файлов, начинающихся на точку, проще всего открыть консоль Cygwin и выполнить команду:
Внутри файла пишем:
Слеши в пути до py-файла – обратные.
Это займет весьма много времени.
Важно! Постарайтесь установить в путь с как можно более коротким имененем, например: C:/hg. Это поможет избежать ошибок с излишне длинными именами файлов, которые не может обработать проводник Windows (NTFS уже иногда может их обрабатывать, а Проводник – еще нет). Поможет не попасть в глупую ситуацию, когда репозиторий вы уже склонировали, а удалить его — еще не можете.
Неприятненько. При возникновении ошибки «abort: stream ended unexpectedly». Вначале попробуйте перезапустить hg tclone еще несколько раз. Если ошибка продолжает повторятся, то вам предстоит муторная ручная работа. Запомните, какой проект не выгружался до конца (например, langtools). Перезапустите всё с таким аргументом:
Это загрузит только 100 ченжсетов и даст возможность операции tclone завершиться.
Сразу после этого перейдите в директорию проекта, который не докачался (например, langtools), и выполните hg tpull -u 1000.
И дальше добавляйте по 1000 ченжсетов:
hg tpull -u 1000
hg tpull -u 2000
hg tpull -u 3000
Когда ревизии закончатся – нужно перейти в корень (9dev), и выполнить там команду “hg tpull -u” (без указания количества ревизий).
Если после этого упадёт тот же проект – перейдите в него назад, и с более маленьким шагом докачайте оставшиеся ревизии совсем точно до конца, вернитесь в корень и повторите hg tpull -u без аргументов.
Собираем JDK
- Открываем консоль Cygwin (НЕ cmd.exe), переходим в директорию со склонированными исходниками.
- Выполняем команду:
пути до файлов должны совпадать с теми, что мы получили в ходе выполнения инструкции:
--with-boot-jdk указывает на директорию, куда вы загрузили JDK8
--with-freetype указывает на директорию внутри исходников freetype, где есть поддиректории include и lib, и в lib вы собрали .dll и .lib с 64-битным фритайпом
Единственная ожидаемая ошибка — при использовании Visual Studio Express:
Видим что там нет диерктории amd64, зато есть x86_amd64.
Копируем её с новым названием: amd64.
Заходим внутрь amd64, и копируем файл vcvarsx86_amd64.bat с новым именем: vcvars64.bat
Перезапускаем configure с новым параметром: --with-tools-dir:
Tools summary:
* Environment: cygwin version 2.6.1(0.305/5/3) (root at /cygdrive/c/cygwin)
* Boot JDK: java version «1.8.0_111» Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode) (at /cygdrive/c/opt/Java/jdk1.8.0_111)
* Toolchain: microsoft (Microsoft Visual Studio 2013)
* C Compiler: Version 18.00.40629 (at /cygdrive/c/progra~2/micros~2.0/vc/bin/amd64/cl)
* C++ Compiler: Version 18.00.40629 (at /cygdrive/c/progra~2/micros~2.0/vc/bin/amd64/cl)
Проверяем запуск
Внутри диретктории с исходниками должна появиться директория builds/windows-x86_64-normal-server-fastdebug
С помощью консоли (cmd.exe) заходим в каталог типа:
X:\git\openjdk9\build\windows-x86_64-normal-server-fastdebug\jdk\bin
БлогNot. Как собрать проект C++ с github из исходников и подключить его к Visual Studio
Как собрать проект C++ с github из исходников и подключить его к Visual Studio
Благодаря менеджеру пакетов winget, уже входящему в актуальные сборки масдайки, теперь в Windows 10 можно инсталлировать приложения одной простой консольной командой (см. также доку от Микрософта).
Но мы рассмотрим сейчас ситуацию, когда у нас есть только ссылка на исходники проекта, скажем, на Гитхабе (возьмём для примера библиотеку для простых чисел primesieve) и нужно каким-то образом скомпилировать внешний проект в своей Studio, чтобы воспользоваться его возможностями в своём приложении.
В противном случае, конечно же, нестандартный include вроде этого, который вы нашли в коде-образце
работать не будет ни за что.
Первым делом скачаем все исходники внешнего проекта "как есть" в архиве .zip, для этого у нас на гитхабе есть кнопка "Download ZIP":
Как загрузить проект с github в архиве .zip
Развернём проект, не создавая новой папки, если у вашего архиватора нет такого же пункта меню, просто сотрите предлагаемое архиватором имя новой папки, потому что папка уже есть в архиве:
Извлечь внешний проект из архива, не создавая новой папки
Если покопаться в файле readme.md проекта, как правило, можно найти инструкцию по установке (Build instructions) и даже "Detailed build instructions", где говорится, в числе прочего, и о компиляции проекта под Microsoft Visual C++:
Команды cmake для компиляции проекта со страницы документации
Откроем свой "некомпилируемый" без нужной библиотеки проект в Studio (я использую актуальную сборку версии 2019) и обратимся к команде меню Вид - Терминал. Выберем инструмент "Командная строка разработчика" (по умолчанию в новых сборках теперь выбран PowerShell, впрочем, если в документации приведены команды PowerShell, то применяйте их).
У Микрософта инструмент описан вот здесь.
Командная строка разработчика в Studio
В командной строке пишем команды из документации, но сначала, конечно, нужно перейти в ту папку, где у вас развёрнут скачанный проект. Мне понадобилось ввести в консоли следующее, завершая каждую команду нажатием Enter:
- теперь я в нужной папке, так как развернул свой архив в папку d:\temp
Далее как написано:
Можно просто копировать команды со страницы документации, в окне консоли вверху есть стандартная кнопочка "Вставить". А вот точка в записи команд имеет значение, это ссылка на текущую папку!
Ну и, конечно, для другой версии Studio будет другое указание компилятора, узнать своё можно командой
Нужный генератор будет помечен в списке "звёздочкой".
Теперь проект можно открывать в Studio и работать с ним, все нужные файлы есть в папке d:\temp\primesieve-master
Но мы хотим подключить всё, что нужно, к своему имеющемуся проекту, а не пытаться модифицировать чужую библиотеку.
- Меню Проект - Свойства, слева выбираем Свойства конфигурации, C/C++, Общие, раскрываем поле "Дополнительные каталоги включаемых файлов", говорим "Изменить" и показываем на папку D:\Temp\primesieve-master\include . В вашем проекте, как правило, тоже будет вложенная папка include .
- В том же окне выбираем Компоновщик - Общие - Дополнительные каталоги библиотек, "Изменить" и добавляем путь D:\Temp\primesieve-master\Release . Этого может оказаться мало, у вашего проекта и внешнего должны быть выбраны одинаковые конфигурации решения. Так как я выбрал Release для внешнего проекта, то и в своём проекте в списке "Конфигурации решения" (на стандартной панели инструментов) указал Release и платформу x64. Можно было работать и с Debug, но тогда и внешний проект компилируем как Debug и потом выбираем путь D:\Temp\primesieve-master\Debug .
- В списке C/C++ - Создание кода - Библиотека времени выполнения выбрал Многопоточный DLL (/MD), иначе будет "LNK2038: обнаружено несоответствие для 'RuntimeLibrary': значение 'MT_StaticRelease' не соответствует значению 'MD_DynamicRelease' в file.obj".
- Сам файл библиотеки, как правило имеющий тип .lib , тоже нужно прописать. Всё в том же окне свойства проекта выбираем список Компоновщик - Ввод, раскрываем список "Дополнительные зависимости", жмём "Изменить" и указываем в поле ввода имя файла библиотеки primesieve.lib
- На всякий случай, проверяем, что у нас в списке Компоновщик - Система - Подсистема, у меня там просто Консоль (/SUBSYSTEM:CONSOLE) , для других типов проектов может понадобиться изменение и этой настройки.
После этого у меня всё заработало.
Ну а конкретная задача, на которой я проверял библиотеку - печать самых длинных цепочек последовательных простых чисел, в которых разница между соседними значениями строго возрастает или строго убывает, предел счёта равен 1000000, вот сама программа:
Ответы вышли такие:
За счёт хорошо оптимизированного кода библиотеки считается всё мгновенно.
В наше время open source проекты все популярнее. На площадках открытых проектов, например, на github можно найти множество полезных программ, но они не всегда имеют исполняемые файлы ("exe"), поэтому я постараюсь рассказать о том, как можно собрать самостоятельно C/C++ программу, из исходников, написанную на Microsoft Visual Studio.
Первым делом нам необходимо загрузить онлайн установщик Microsoft Visual Studio, с официального сайта. Для компиляции С/С++ проектов нет необходимости во всех пакетах и можно выбрать только те, которые нам необходимы.
Установщик загрузит необходимые пакеты из интернета и установит их.
После установки Visual Studio можно убедиться, что всё работает создав тестовый проект и скомпилировав его. Для этого нажмите в меню "Файл" → "Создать" → "Проект. "
После чего появится диалог выбора типа проекта, где можно выбрать:
- Консольное приложение;
- Классическое приложение;
- Библиотеку динамической компоновки (dll);
- Статическую библиотеку;
В нашем случае для быстрой проверки подойдет консольное приложение, выбираем название и папку проекта , после чего жмём кнопку "ОК" и создается наша программа.
После этого остается остается лишь скомпилировать её, для этого нужно выбрать в меню "Сборка" и нажать на пункт "Собрать решение".
Далее наш проект скомпилируется и в папке проекта появится наш тестовый исполняемый файл ("exe").
Если всё работает как надо, то можно приступать к сборке какого-нибудь другого открытого проекта с github или другого хостинга проектов.
Первым делом нам нужно загрузить исходники проекта. На площадке github это делается довольно просто, жмем на кнопку "Code" и "Download ZIP". После чего нужно распаковать его и можно приступать к сборке.
Ищем файл с расширением ".vcxproj" и запускаем его. Перед нами появится диалог в котором нам предложат обновить SDK проекта (набор библиотек для разработки, которые Microsoft периодически обновляет) и набор инструментов, жмём обновить.
Теперь наш проект можно собрать, но до сборки необходимо выбрать разрядность проекта (например, для 32 битной системы или 64 битной), а также тип сборки (отладочный режим - debug или release).
Выбираем 64 битную систему и тип сборки релиз, после чего компилируем проект. Как и ранее нужно выбрать в меню "Сборка" и нажать на пункт "Собрать решение".
Некоторые проектам требуется вручную изменить SDK и набор инструментов, на установленный у вас, для этого идём в свойства проекта, выбираем сверху типа сборки и разрядность системы и уже там изменяем SDK и набор инструментов. В выпадающем меню появляются установленные у нас версии, выбираем их и нажимаем "ОК". После чего наш проект скомпилируется.
Бывает, что проект использует сторонние библиотеки, для этого их нужно загрузить отдельно и положить в папку. Узнать путь или изменить его можно в свойстве проекта, в разделе "С/C++" → "Общие" → "Дополнительные каталоги включаемых файлов".
Бывает, что SDK или набор инструментов, в свойстве проекта не изменяется в диалоге, чтобы изменить их нужно записать номер SDK, закрыть Visual Studio и вручную, блокнотом изменить этот номер в файле проекта ".vcxproj".
При возникновении других проблем можно попробовать их загуглить, возможно, что кто-то уже сталкивался с ними и решил их.
Читайте также: