Как запустить пример steamworks на ubuntu

  1. Я скачал SDK Steamworks.

  2. #P2#
    steam/sdk/steamworksexample$ make steam/sdk/steamworksexample/../tools/linux/bin/g++ -g -DPOSIX -DSDL -I/home/steam/sdk/steamworksexample/../tools/linux/runtime/i386/usr/include/SDL2 -D_REENTRANT -DGNUC -O0 -I/home/steam/sdk/steamworksexample/../public -DDEBUG   -c Inventory.cpp -o debug/Inventory.o -MD -MF debug/Inventory.dep
    
    <цитата> #P3#
  3. Я использую Ubuntu 14.04.3 LTS.


person user2975881    schedule 08.09.2015    source источник


Ответы (1)


Я только что получил пример steamworks для сборки и запуска на моем компьютере с Ubuntu 14.04. У меня нет отличного исправления, но есть несколько хакерских решений.

Короткое решение состояло в том, чтобы запустить (вам нужно будет изменить пути включения здесь в любой каталог, в котором у вас есть этот код):

make CFLAGS="-std=c++0x -include /home/bbales2/sdk/public/steam/steamtypes.h -I/home/bbales2/sdk/tools/linux/runtime-release/amd64/usr/include/SDL2/ -DSDL=1"

Это скомпилирует некоторые вещи, но не сможет скомпилировать "glew.c". Чтобы скомпилировать этот файл, вам нужно удалить включение steamtypes из этой сборки и снова запустить его следующим образом:

make CFLAGS="-std=c++0x -I/home/bbales2/sdk/tools/linux/runtime-release/amd64/usr/include/SDL2/ -DSDL=1"

После компиляции glew.c make снова завершится ошибкой. Повторно запустите первую команду make, и в конце концов все должно закончиться. Запустите пример с помощью «debug/SteamworksExample.sh».


Более подробно ошибки, с которыми я столкнулся, перечислены здесь. Мы можем исправить их все с помощью CFLAGS:

error: 'nullptr' was not declared in this scope

Чтобы исправить это, вам нужно указать вашему компилятору C++11. Это флаг "-std=c++0x"

GameEngine.h:129:52: error: 'uint32' has not been declared
GameEngine.h:129:67: error: 'uint32' has not been declared
GameEngine.h:132:52: error: 'byte' has not been declared
GameEngine.h:132:65: error: 'uint32' has not been declared
GameEngine.h:132:80: error: 'uint32' has not been declared
GameEngine.h:135:52: error: 'DWORD' has not been declared

Существует заголовок sdk/public/steam/steamtypes.h, который их определяет. По умолчанию он не включается по какой-то причине. Это флаг «-include /home/bbales2/sdk/public/steam/steamtypes.h».

gameenginesdl.h:18:17: fatal error: SDL.h: No such file or directory

Заголовки SDL отсутствуют. Valve включает их в sdk/tools/linux/runtime-release/amd64/usr/include/SDL2/, но Makefile не обнаруживает и не добавляет их. Это флаг "-I/home/bbales2/sdk/tools/linux/runtime-release/amd64/usr/include/SDL2/".

In file included from <command-line>:0:0:
/home/bbales2/sdk/public/steam/steamtypes.h:107:15: error: variably modified 'Salt_t' at file scope
/home/bbales2/sdk/public/steam/steamtypes.h:123:1: error: initializer element is not constant
make: *** [debug/glew.o] Error 1

Мы получаем эту ошибку, потому что мы не можем включить steamtypes.h при компиляции этого файла (использование флага -include для принудительного включения, как это, не лучшая идея). Простое удаление включений steamtypes, повторный запуск make для компиляции этого файла, а затем добавление включений steamtypes обратно (для остальной части компиляции), кажется, работает.

А также

Main.cpp:248:2: error: #error Need CreateGameEngine()
... (bunch of Warnings)
Main.cpp: In function 'int RealMain(const char*, HINSTANCE, int)':
Main.cpp:251:2: error: expected primary-expression before 'if'
Main.cpp:251:2: error: expected ',' or ';' before 'if'
make: *** [debug/Main.o] Error 1

Main.cpp, похоже, хочет, чтобы мы определили макрос SDL. Мы делаем это с "-DSDL=1"

person spamduck    schedule 10.01.2016