2015-09-11 2 views
0

Я пытаюсь скомпилировать демо-версию Bullet от John McCucatchan github [1] без успеха. Предварительные файлы в этом репозитории предназначены для сборки только NaClAMBullet и NaClAMTest. Поэтому я модифицирую premake64.lua для нацеливания NaClAMBullet вместо NaClAMTest. Но это не сработало.Премия для цели NaClAMBullet

local nacl_sdk_path = os.getenv("NACL_SDK_ROOT") 
local nacl_toolchain_path = os.getenv("NACL_SDK_BIN") 
local bullet_path = os.getenv("BULLET_ROOT") 
premake.gcc.cc = nacl_toolchain_path .. "/x86_64-nacl-gcc" 
premake.gcc.cxx = nacl_toolchain_path .. "/x86_64-nacl-g++" 
premake.gcc.ar = nacl_toolchain_path .. "/x86_64-nacl-ar" 

solution "NaClAM" 
    configurations { "Debug", "Release" } 

project "NaClAMBase64" 
    kind "StaticLib" 
    language "C++" 
    files { 
     "NaClAMBase/*.cpp", 
     } 
    includedirs { nacl_sdk_path .. "/include" } 
    configuration "Debug" 
     defines { "DEBUG" } 
     flags { "Symbols" } 
     targetdir "premake/lib/debug" 
     buildoptions { "-std=gnu++0x -fno-rtti -fno-exceptions -m64 -msse2" } 
    configuration "Release" 
     defines {"NDEBUG"} 
     flags {"Optimize"} 
     targetdir "premake/lib/release" 
     buildoptions { "-std=gnu++0x -fno-rtti -fno-exceptions -m64 -msse2" } 

project "NaClAMBullet64" 
    kind "ConsoleApp" 
    language "C++" 
    files { 
     "NaClAMBullet/*.cpp", 
     } 
    includedirs { "." } 
    includedirs { bullet_path } 
    includedirs { "/include" } 
    includedirs { nacl_sdk_path .. "/include" } 
    links { "NaClAMBase64", "m", "pthread", "ppapi" } 
    configuration "Debug" 
     defines { "DEBUG" } 
     flags { "Symbols" } 
     targetdir "premake/bin/debug" 
     targetextension ".nexe" 
     buildoptions { "-std=gnu++0x -fno-rtti -fno-exceptions -m64 -msse2" } 
    configuration "Release" 
     defines {"NDEBUG"} 
     flags {"Optimize"} 
     targetdir "premake/bin/release" 
     targetextension ".nexe" 
     buildoptions { "-std=gnu++0x -fno-rtti -fno-exceptions -m64 -msse2" } 

Для создания Makefile я просто запустить следующую строку:

premake4 --file=premake64.lua gmake 

И построить приложение, просто введите:

make -R 

В результате этих операций является следующий сборник погрешность:

==== Building NaClAMBullet64 (debug) ==== 
Creating obj/Debug/NaClAMBullet64 
NaClAMBullet.cpp 
NaClAMBullet/NaClAMBullet.cpp: In function ‘void handleStepScene(const NaClAMMessage&)’: 
NaClAMBullet/NaClAMBullet.cpp:336:40: error: call of overloaded ‘Value(uint64_t&)’ is ambiguous 
    root["simtime"] = Json::Value(delta); 
             ^
NaClAMBullet/NaClAMBullet.cpp:336:40: note: candidates are: 
In file included from ./NaClAMBase/NaClAMBase.h:18:0, 
       from NaClAMBullet/NaClAMBullet.cpp:4: 
./NaClAMBase/json/json.h:559:7: note: Json::Value::Value(const Json::Value&) 
     Value(const Value &other); 
    ^
./NaClAMBase/json/json.h:558:7: note: Json::Value::Value(bool) 
     Value(bool value); 
    ^
./NaClAMBase/json/json.h:554:7: note: Json::Value::Value(const string&) <near match> 
     Value(const std::string &value); 
    ^
./NaClAMBase/json/json.h:554:7: note: no known conversion for argument 1 from ‘uint64_t {aka long unsigned int}’ to ‘const string& {aka const std::basic_string<char>&}’ 
./NaClAMBase/json/json.h:541:7: note: Json::Value::Value(const char*) <near match> 
     Value(const char *value); 
    ^
./NaClAMBase/json/json.h:541:7: note: no known conversion for argument 1 from ‘uint64_t {aka long unsigned int}’ to ‘const char*’ 
./NaClAMBase/json/json.h:540:7: note: Json::Value::Value(double) 
     Value(double value); 
    ^
./NaClAMBase/json/json.h:538:7: note: Json::Value::Value(Json::Value::UInt64) 
     Value(UInt64 value); 
    ^
./NaClAMBase/json/json.h:537:7: note: Json::Value::Value(Json::Value::Int64) 
     Value(Int64 value); 
    ^
./NaClAMBase/json/json.h:535:7: note: Json::Value::Value(Json::Value::UInt) 
     Value(UInt value); 
    ^
./NaClAMBase/json/json.h:534:7: note: Json::Value::Value(Json::Value::Int) 
     Value(Int value); 
    ^
./NaClAMBase/json/json.h:533:7: note: Json::Value::Value(Json::ValueType) <near match> 
     Value(ValueType type = nullValue); 
    ^
./NaClAMBase/json/json.h:533:7: note: no known conversion for argument 1 from ‘uint64_t {aka long unsigned int}’ to ‘Json::ValueType’ 
NaClAMBullet64.make:129: recipe for target 'obj/Debug/NaClAMBullet64/NaClAMBullet.o' failed 
make[1]: *** [obj/Debug/NaClAMBullet64/NaClAMBullet.o] Error 1 
Makefile:20: recipe for target 'NaClAMBullet64' failed 
make: *** [NaClAMBullet64] Error 2 

Что я делаю неправильно? Являются ли эти зависимости чем-то решаемым в прессовом файле или где-то еще?

+1

Это репо довольно старый ... если вы хотите использовать Bullet, я бы предложил использовать версию в naclports (https://code.google.com/p/naclports/). – binji

ответ

1

Если вы считаете, что это проблема сборки, которая не связана с Premake: компилятор не может решить, какую версию конструктора Json :: Value он должен использовать.

Смежные вопросы