【问题标题】:include lua library in kreversi using cmake (kdegames)使用 cmake (kdegames) 在 kreversi 中包含 lua 库
【发布时间】:2013-05-12 11:24:44
【问题描述】:

所以,我正在努力将 lua 脚本添加到 kreversi。我是 cmake 的新手,这是我第一次尝试编写 kde 项目。

我正在使用 lua5.2,发现 cmake 没有正式支持 lua5.2 库。于是我搜索并找到this cmake 的lua5.2 并模仿他或她的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,然后 make 时,出现编译错误“未定义对 luaL_newstate()'" and "undefined reference toluaL_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?

我已经在我的电脑上安装了lua5.2-dev并且没有使用cmake,已经成功编译了gcc test.c -I/usr/include/lua5.2 -llua5.2的c-lua程序

【问题讨论】:

    标签: lua cmake kde


    【解决方案1】:

    别管这个。错误不是来自 cmake,而是因为我忘记包含 lua.hpp 和 luaconf.h。它以前在 gcc 中工作,因为我在纯 c 中使用它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 2021-05-29
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      相关资源
      最近更新 更多