LINUX.ORG.RU

makefile to cmake convertor?

 ,


0

2

Здравствуйте, есть небольшой makefile, но я не знаю ни синтаксис makefile ни cmake. Существует ли конвертор для такой цели? Если нет то можете помочь перевести?

EXECUTABLE = FirstGame

INCLUDES = -I.. -I../Classes -I../Classes/Layers

SOURCES = main.cpp \
        ../Classes/AppDelegate.cpp \
        ../Classes/HelloWorldScene.cpp \
        ../Classes/MyGameScene.cpp \
        ../Classes/Layers/MyBGLayer.cpp \
        ../Classes/Layers/MyFishLayer.cpp
        

COCOS_ROOT = /home/username/local/cocos2d-2.1
include $(COCOS_ROOT)/cocos2dx/proj.linux/cocos2dx.mk

SHAREDLIBS += -lcocos2d
COCOS_LIBS = $(LIB_DIR)/libcocos2d.so

$(TARGET): $(OBJECTS) $(STATICLIBS) $(COCOS_LIBS) $(CORE_MAKEFILE_LIST)
	@mkdir -p $(@D)
	$(LOG_LINK)$(CXX) $(CXXFLAGS) $(OBJECTS) -o $@ $(SHAREDLIBS) $(STATICLIBS)

$(OBJ_DIR)/%.o: %.cpp $(CORE_MAKEFILE_LIST)
	@mkdir -p $(@D)
	$(LOG_CXX)$(CXX) $(CXXFLAGS) $(INCLUDES) $(DEFINES) $(VISIBILITY) -c $< -o $@

$(OBJ_DIR)/%.o: ../%.cpp $(CORE_MAKEFILE_LIST)
	@mkdir -p $(@D)
	$(LOG_CXX)$(CXX) $(CXXFLAGS) $(INCLUDES) $(DEFINES) $(VISIBILITY) -c $< -o $@

make и cmake - программы с разным назначением

HNO-Arzt_
()

Хотя в твоем случае можно использовать и cmake для нахождения библиотек. Вот пример:

cmake_minimum_required(VERSION 2.8)
project(helloworld)
add_executable(helloworld hello.c)
find_package (BZip2 REQUIRED)
include_directories(${BZIP_INCLUDE_DIRS})
target_link_libraries (helloworld ${BZIP2_LIBRARIES})

http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries

HNO-Arzt_
()

Полностью перевести не получится из-за

include $(COCOS_ROOT)/cocos2dx/proj.linux/cocos2dx.mk

а так, в первом приближении:

PROJECT(FirstGame)

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

SET(COCOS_ROOT /home/username/local/cocos2d-2.1)

INCLUDE_DIRECTORIES(
  ..
  ../Classes
  ../Classes/Layers
  ${COCOS_ROOT}/include # возможно include потребуется заменить на правильную поддиректорию
)

SET(SOURCES
  main.cpp
  ../Classes/AppDelegate.cpp
  ../Classes/HelloWorldScene.cpp
  ../Classes/MyGameScene.cpp
  ../Classes/Layers/MyBGLayer.cpp
  ../Classes/Layers/MyFishLayer.cpp
)

ADD_EXECUTABLE(FirstGame ${SOURCES})

TARGET_LINK_LIBRARIES(FirstGame ${COCOS_ROOT}/lib/libcocos2d.so)  # возможно lib потребуется заменить на правильную поддиректорию

Кроме замены путей к include/lib возможно, также понадобится добавить дополнительные флаги, которые устанавливаются в cocos2dx.mk через ADD_DEFINITIONS или SET(CMAKE_CXX_FLAGS «${CMAKE_CXX_FLAGS} <доп. флаги>») - недостающее можно взять из лога сборки старым makefile'ом.

slovazap ★★★★★
()
Последнее исправление: slovazap (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.