Я скачал SDK Steamworks.
- #P2#
<цитата> #P3# цитата>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
Я использую Ubuntu 14.04.3 LTS.
Как запустить пример steamworks на ubuntu
Ответы (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"