Задать вопрос
@errogaht
PHP developer

Как скомпилировать нормально в Clion?

Хочу попробовать C++
Хочу работать в CLion у меня win 10;
- Поставил CLion
- Поставил cygwin и всё настроил: share2.q9x.ru/077bc060-7d66-4895-805f-b1ba1e352a9d.png
- Пишу вот такой код и компилирую share2.q9x.ru/1b08f1ee-208a-4860-aafd-bb83b85c0ce2.png
- Запускаю это дерьмо в винде share2.q9x.ru/840cb97e-d15d-4936-98ad-6d02cfb6463a.png

Почему нельзя вот просто из коробки взять с сделать чтобы работало?
Только не предлагайте найти эту dll и засунуть в папку с прогой!
Я хочу просто получить .exe файл который будет работать на компьютере! один файл в котором сраный hello world
Что на C++ это невозможно?
  • Вопрос задан
  • 11478 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
TrueBers
@TrueBers
Гуглю за еду
Я хочу просто получить .exe файл который будет работать на компьютере! один файл в котором сраный hello world
Что на C++ это невозможно?
На C++ возможно всё, просто это такой язык, в котором за вас никто ничего не будет делать, вы несёте ответственность за каждую мелочь, за каждую опцию, и должны это всё понимать, в отличие от других языков.

Погуглите, что такое статическая и динамическая линковки, что такое единица компиляции, объектный файл, почитайте про процесс линковки, как разрешаются имена во время линковки, почему могут быть коллизии, и т. п.
В любом языке программирования существуют runtime-библиотеки. В них хранится вся встроенная логика и стандартные библиотеки языка. В нормальных условиях принято линковать динамически. Это когда есть динамическая библиотека (DLL, SO, dynlib), она загружается в память единожды и её могут использовать все, кто к ней прилинкован.

Вы же используете Clion, который, в свою очередь, использует CMake для управления проектом. У CMake, как и, собственно, у многих других систем сборки, есть такая штука, Deploy называется. Вы же, как PHP-разработчик, ведь тоже выполняете деплой, верно? Точно так же делается и здесь, особенно на винде. Вам нужно написать CMake-target для деплоя, который сам посмотрит, что нужно вашему "сраному hello world'у", и соберёт в одном каталоге эти все дела для запуска. Дальше вы выбираете в CLion в поле Build/Run Configuration свою цель деплоя, жмёте Build. И все оказывается в одной папке и беспроблемно запускается везде.

Вот здесь есть пример использования модуля BundleUtilities для деплоя (fixup_bundle).
Ответ написан
@as82
присоединяюсь к словам Дмитрия
В cmake нужно подключить эти библиотеки пример CMakeLists.txt в низу

cmake_minimum_required(VERSION 3.9)
project(your_project)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
set(SOURCE_FILES main.cpp)
add_executable(your_project ${SOURCE_FILES})
target_link_libraries(your_project ${CMAKE_EXE_LINKER_FLAGS})

вот и все!!!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы