Здравствуйте!
По этой статье
https://m.habrahabr.ru/post/270133/, пытаюсь начать работу с cocos2d. Всё сделал также, как написано в статье. Ошибки начинаются при попытке запустить cmake.
cd ~/work/cocos/cocos2d-x-3.8.1/build
mkdir linux-build
cd linux-build
cmake ../..
Вот ошибки
vadim@Razvaluha:~/cocos/cocos2d-x-3.13.1/build/linux-build$ clear
vadim@Razvaluha:~/cocos/cocos2d-x-3.13.1/build/linux-build$ cmake ../..
It appears you are builing natively for Linux with GCC
-- OpenGL include dirs: /usr/include
-- GLEW include dirs: /usr/include
-- PkgConfig found
-- GLFW3 include dirs: /usr/local/include/GLFW
-- SQLite3 include dirs: /usr/include
-- FMOD include dirs: /home/vadim/cocos/cocos2d-x-3.13.1/external/linux-specific/fmod/include
-- Fontconfig include dirs: /usr/include/freetype2
-- GTK3 include dirs: /usr/include/gtk-3.0;/usr/include/atk-1.0;/usr/include/at-spi2-atk/2.0;/usr/include/pango-1.0;/usr/include/gio-unix-2.0/;/usr/include/cairo;/usr/include/gdk-pixbuf-2.0;/usr/include/glib-2.0;/usr/lib/i386-linux-gnu/glib-2.0/include;/usr/include/harfbuzz;/usr/include/freetype2;/usr/include/pixman-1;/usr/include/libpng12
-- Freetype include dirs: /home/vadim/cocos/cocos2d-x-3.13.1/external/freetype2/include/linux;/home/vadim/cocos/cocos2d-x-3.13.1/external/freetype2/include/linux
-- WebP include dirs: /home/vadim/cocos/cocos2d-x-3.13.1/external/webp/include/linux
CMake Error at cmake/Modules/FindPackageHandleStandardArgs.cmake:136 (message):
Could NOT find Chipmunk (missing: CHIPMUNK_LIBRARIES CHIPMUNK_INCLUDE_DIR)
Call Stack (most recent call first):
cmake/Modules/FindPackageHandleStandardArgs.cmake:343 (_FPHSA_FAILURE_MESSAGE)
cmake/Modules/FindChipmunk.cmake:77 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
cmake/Modules/CocosBuildHelpers.cmake:44 (find_package)
cmake/Modules/BuildModules.cmake:46 (cocos_find_package)
CMakeLists.txt:98 (BuildModules)
-- Configuring incomplete, errors occurred!
See also "/home/vadim/cocos/cocos2d-x-3.13.1/build/linux-build/CMakeFiles/CMakeOutput.log".
See also "/home/vadim/cocos/cocos2d-x-3.13.1/build/linux-build/CMakeFiles/CMakeError.log".
Вот лог в который cmake записал ошибки
Файл CMakeError.log
Determining if the pthread_create exist failed with the following output:
Change Dir: /home/vadim/cocos/cocos2d-x-3.13.1/build/linux-build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/make" "cmTC_8363f/fast"
/usr/bin/make -f CMakeFiles/cmTC_8363f.dir/build.make CMakeFiles/cmTC_8363f.dir/build
make[1]: Вход в каталог `/home/vadim/cocos/cocos2d-x-3.13.1/build/linux-build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_8363f.dir/CheckSymbolExists.c.o
/usr/bin/cc -std=gnu99 -o CMakeFiles/cmTC_8363f.dir/CheckSymbolExists.c.o -c /home/vadim/cocos/cocos2d-x-3.13.1/build/linux-build/CMakeFiles/CMakeTmp/CheckSymbolExists.c
Linking C executable cmTC_8363f
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_8363f.dir/link.txt --verbose=1
/usr/bin/cc -std=gnu99 CMakeFiles/cmTC_8363f.dir/CheckSymbolExists.c.o -o cmTC_8363f -rdynamic
CMakeFiles/cmTC_8363f.dir/CheckSymbolExists.c.o: In function `main':
CheckSymbolExists.c:(.text+0xa): undefined reference to `pthread_create'
make[1]: Выход из каталога `/home/vadim/cocos/cocos2d-x-3.13.1/build/linux-build/CMakeFiles/CMakeTmp'
collect2: error: ld returned 1 exit status
make[1]: *** [cmTC_8363f] Ошибка 1
make: *** [cmTC_8363f/fast] Ошибка 2
File /home/vadim/cocos/cocos2d-x-3.13.1/build/linux-build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:
/* */
#include <pthread.h>
int main(int argc, char** argv)
{
(void)argv;
#ifndef pthread_create
return ((int*)(&pthread_create))[argc];
#else
(void)argc;
return 0;
#endif
}
Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /home/vadim/cocos/cocos2d-x-3.13.1/build/linux-build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/make" "cmTC_5f574/fast"
/usr/bin/make -f CMakeFiles/cmTC_5f574.dir/build.make CMakeFiles/cmTC_5f574.dir/build
make[1]: Вход в каталог `/home/vadim/cocos/cocos2d-x-3.13.1/build/linux-build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_5f574.dir/CheckFunctionExists.c.o
/usr/bin/cc -std=gnu99 -DCHECK_FUNCTION_EXISTS=pthread_create -o CMakeFiles/cmTC_5f574.dir/CheckFunctionExists.c.o -c /usr/local/share/cmake-3.4/Modules/CheckFunctionExists.c
Linking C executable cmTC_5f574
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_5f574.dir/link.txt --verbose=1
/usr/bin/cc -std=gnu99 -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_5f574.dir/CheckFunctionExists.c.o -o cmTC_5f574 -rdynamic -lpthreads
/usr/bin/ld: cannot find -lpthreads
make[1]: Выход из каталога `/home/vadim/cocos/cocos2d-x-3.13.1/build/linux-build/CMakeFiles/CMakeTmp'
collect2: error: ld returned 1 exit status
make[1]: *** [cmTC_5f574] Ошибка 1
make: *** [cmTC_5f574/fast] Ошибка 2
Из лога следует, что не был найден -lpthreads, хотя пакет libpthread установлен.
Вот сам makefile, который был написан не мною, а разработчиками кокоса.
cmake_minimum_required(VERSION 3.1)
# It ensures that when Find*.cmake files included from cmake's Modules dir
# include another *.cmake file with relative path, that file will be included
# also from cmake's Modules dir, to not clash with per-project files.
cmake_policy(SET CMP0017 NEW)
# Use new behaviour with cmake >= 3.1:
# Only interpret if() arguments as variables or keywords when unquoted.
if(CMAKE_VERSION VERSION_GREATER 3.1)
cmake_policy(SET CMP0054 NEW)
endif()
project (Cocos2d-X)
# The version number
set(COCOS2D_X_VERSION 3.13)
# define some variables
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules/")
set(COCOS_EXTERNAL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external)
# architecture
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
set(ARCH_DIR "64-bit")
elseif (CMAKE_SIZEOF_VOID_P EQUAL 4)
set(ARCH_DIR "32-bit")
else()
message(FATAL_ERROR "Unsupported architecture, CMake will exit")
return()
endif()
# CMAKE_BUILD_TYPE has precedence over DEBUG_MODE
# Still supporting DEBUG_MODE for backwards compatibility
if (NOT CMAKE_BUILD_TYPE)
if(DEBUG_MODE)
set(CMAKE_BUILD_TYPE DEBUG)
else(DEBUG_MODE)
set(CMAKE_BUILD_TYPE RELEASE)
endif(DEBUG_MODE)
endif(NOT CMAKE_BUILD_TYPE)
include(CocosBuildHelpers)
message(${BUILDING_STRING})
# SelectModule() is a macro to select building modules
include(SelectModule)
SelectModule()
# set compiler options
include(SetCompilerOptions)
SetCompilerOptions()
if (CMAKE_FIND_ROOT_PATH AND USE_PREBUILT_LIBS)
# Adds cocos2d-x external folder to the list of valid include/library paths when cross-compiling and using prebuilds
set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${COCOS_EXTERNAL_DIR})
endif ()
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/cocos
${CMAKE_CURRENT_SOURCE_DIR}/deprecated
${CMAKE_CURRENT_SOURCE_DIR}/cocos/platform
${CMAKE_CURRENT_SOURCE_DIR}/extensions
${CMAKE_CURRENT_SOURCE_DIR}/external
)
if(USE_PREBUILT_LIBS)
include(CocosUsePrebuiltLibs)
endif()
include(BuildModules)
BuildModules()
# build cpp-empty-test
if(BUILD_CPP_EMPTY_TEST)
add_subdirectory(tests/cpp-empty-test)
endif(BUILD_CPP_EMPTY_TEST)
# build cpp-tests
if(BUILD_CPP_TESTS)
add_subdirectory(tests/cpp-tests)
endif(BUILD_CPP_TESTS)
## Scripting
if(BUILD_LUA_LIBS)
add_subdirectory(cocos/scripting/lua-bindings)
# build lua tests
if(BUILD_LUA_TESTS)
add_subdirectory(tests/lua-tests/project)
add_subdirectory(tests/lua-empty-test/project)
endif(BUILD_LUA_TESTS)
endif(BUILD_LUA_LIBS)
## JS
if(BUILD_JS_LIBS)
add_subdirectory(cocos/scripting/js-bindings)
# build js tests
if(BUILD_JS_TESTS)
add_subdirectory(tests/js-tests/project)
endif(BUILD_JS_TESTS)
endif(BUILD_JS_LIBS)
Помогите пожалуйста исправить проблему.