2013-05-17 62 views
0

所以,我正在努力将lua脚本添加到kreversi。我是cmake的新手,这是我第一次尝试编码到kde项目中。包括在kreversi使用cmake(kdegames)lua库

我使用lua5.2,发现cmake并没有正式支持lua5.2库。所以我搜索并找到了lua5.2的this cmake,并模仿他或她的CMakeList.txt,并相应地修改为kreversi CMakeList.txt。

这里是我的修改kreversi CMakeList:

project(kreversi) 

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/") 

if(NOT COMPILING_KDEGAMES) 
    find_package(KDE4 REQUIRED) 
    include(KDE4Defaults) 
    include(MacroLibrary) 
    find_package(KDEGames 4.9.0 REQUIRED) 

    add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) 
    add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS) 
    include_directories(${KDEGAMES_INCLUDE_DIRS} ${KDEGAMES_INCLUDE_DIR}/highscore ${KDE4_INCLUDES} ${QDBUS_INCLUDE_DIRS}) 
endif(NOT COMPILING_KDEGAMES) 

add_subdirectory(pics) 
add_subdirectory(sounds) 
add_subdirectory(icons) 
add_subdirectory(doc) 

find_package(Lua52 REQUIRED) #### I ADDED THIS LINE ##### 

include_directories(${CMAKE_SOURCE_DIR}/libkdegames/highscore ${LUA_INCLUDE_DIR}) #### I MODIFIED THIS LINE ##### 

########### next target ############### 

set(kreversi_SRCS 
    kreversichip.cpp 
    kreversigame.cpp 
    kreversiscene.cpp 
    kreversiview.cpp 
    Engine.cpp 
    highscores.cpp 
    mainwindow.cpp 
    main.cpp) 

kde4_add_kcfg_files(kreversi_SRCS preferences.kcfgc) 

kde4_add_app_icon(kreversi_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi*-app-kreversi.png") 
kde4_add_executable(kreversi ${kreversi_SRCS}) 
target_link_libraries(kreversi ${KDE4_KDEUI_LIBS} kdegames ${LUA_LIBRARIES}) #### I MODIFIED THIS LINE ##### 
install(TARGETS kreversi ${INSTALL_TARGETS_DEFAULT_ARGS}) 

########### install files ############### 

install(PROGRAMS kreversi.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}) 
#install(FILES kreversi.kcfg DESTINATION ${KCFG_INSTALL_DIR}) 
install(FILES kreversiui.rc DESTINATION ${DATA_INSTALL_DIR}/kreversi) 

当我尝试运行cmake的,然后进行有编译错误“未定义参考luaL_newstate()'" and "undefined reference to luaL_openlibs(lua_State *)'”,这可能预示着什么错与链接过程。

我想:

message("lua library : " ${LUA_LIBRARIES}) 

它输出这样的:

lua library : /usr/lib/i386-linux-gnu/liblua5.2.so/usr/lib/i386-linux-gnu/libm.so 

是正确的?我如何在cmake中包含并链接lua5.2?

我已经在我的电脑,没有安装的CMake lua5.2-dev的,已经成功编译C-Lua程序中使用gcc test.c的-I/usr/include目录/ lua5.2 -llua5.2

回答

0

没关系这个。该错误不是从cmake,但因为我忘了包括lua.hpp和luaconf.h。它在gcc之前工作,因为我用它在纯粹的c