Инструкция тестировалась на Conan, установленном через pip install conan==1.52.0
. Версия 1.51 не работала.
При сборке под Linux обязательно указываются флаги:
-s compiler.libcxx=libstdc++11
-s build_type=???
Вот пример конфигурирования для Release и Debug:
# mkdir -p build-release
# cd build-release
# conan install .. --build=missing -s build_type=Release -s compiler.libcxx=libstdc++11
# cmake .. -DCMAKE_BUILD_TYPE=Release
# cd ..
# mkdir -p build-debug
# cd build-debug
# conan install .. --build=missing -s build_type=Debug -s compiler.libcxx=libstdc++11
# cmake .. -DCMAKE_BUILD_TYPE=Debug
# cd ..
Нужно выполнить два шага:
- В conanfile.txt нужно изменить
cmake
наcmake_multi
. После этого можно конфигурировать таким способом: - В CMakeLists.txt заменить
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
наinclude(${CMAKE_BINARY_DIR}/conanbuildinfo_multi.cmake)
.
После этого можно запустить подобный снипет:
# mkdir build
# cd build
# conan install .. --build=missing -s build_type=Debug
# conan install .. --build=missing -s build_type=Release
# conan install .. --build=missing -s build_type=RelWithDebInfo
# conan install .. --build=missing -s build_type=MinSizeRel
# cmake ..
В таком случае будут собираться все конфигурации (что не быстро). Можно сэкономить время, оставив только нужные.
Запускать сборку нужно только через родной cmd. В других консолях иногда возникают проблемы.
Можно собирать и запускать сервер одной командой (вернее, двумя) в докере. Делается это так:
docker build -t my_http_server .
docker run --rm -p 80:8080 my_http_server
Это каноничный способ запуска, которым будут пользоваться студенты. Если он не работает, значит, мы что-то не так делаем.
Из докерфайла можно узнать все детали сборки запуска, если что-то идёт не так локально.
В папке build
выполнить команду
bin/game_server ../data/config.json ../static/
sudo docker run --rm -p 80:8080 my_http_server
http://127.0.0.1/game.html
После этого можно открыть в браузере:
- http://127.0.0.1:8080/api/v1/maps для получения списка карт и
- http://127.0.0.1:8080/api/v1/map/map1 для получения подробной информации о карте
map1
- http://127.0.0.1:8080/ для чтения статического контента (в каталоге static)