2017-10-24 3 views
0

私はCMakeに新しくて、今のところそれはすべて私にとって黒い魔法のように見えます。 トークンの例はhereです! 正しくLua(5.1)libをインクルードしてCMakeにリンクするには?CMAKE:Lua 5.1 libをどのように組み込みリンクするのですか?

$のgcc -W -Wall -g -oメインのmain.cの-Iは/ usr/local/-Lを含んでは/ usr/local/libに/ LUAにと手でコンパイルした場合

サンプル作品/ 5.1 -llua

#include <stdio.h> 
#include <string.h> 

#include "lua.h" 
#include "lualib.h" 
#include "lauxlib.h" 

int main(void) { 
    puts("lua interpretor:"); 
    char buff[256]; 
    int error; 

    lua_State *L = luaL_newstate(); /* opens Lua */ 
    luaL_openlibs(L); /* opens the standard libraries */ 

    while (fgets(buff, sizeof(buff), stdin) != NULL) { 
     error = luaL_loadbuffer(L, buff, strlen(buff), "line") || 
       lua_pcall(L, 0, 0, 0); 
     if (error) { 
      fprintf(stderr, "%s", lua_tostring(L, -1)); 
      lua_pop(L, 1); /* pop error message from the stack */ 
     } 
    } 
    lua_close(L); 
    return 0; 
} 

現在CMakeList.txtは

cmake_minimum_required(VERSION 3.8) 

project(test) 

set(CMAKE_C_STANDARD 11) 
set(SOURCE_FILES main.c) 

include_directories(/usr/local/include) 

add_executable(test ${SOURCE_FILES}) 

のように見え、

をerr.log
Undefined symbols for architecture x86_64: 
    "_luaL_loadbufferx", referenced from: 
     _main in main.c.o 
    "_luaL_newstate", referenced from: 
     _main in main.c.o 
    "_luaL_openlibs", referenced from: 
     _main in main.c.o 
    "_lua_close", referenced from: 
     _main in main.c.o 
    "_lua_pcallk", referenced from: 
     _main in main.c.o 
    "_lua_settop", referenced from: 
     _main in main.c.o 
    "_lua_tolstring", referenced from: 
     _main in main.c.o 
+0

質問にはC++の1つのタグが付けられていますが、Cコードのように見えます。さらに、gccではなくg ++でコンパイルしています。 – Yann

答えて

1

実行可能ファイルにLuaライブラリをリンクしていません。これはtarget_link_libraries()を使用して行われます。最初にライブラリの場所を特定または指定する必要があります。幸いなことに、Luaはと一緒に出荷され、Luaを検索します。

project(test) 

find_package(Lua51 REQUIRED) 

include_directories(/usr/local/include ${LUA_INCLUDE_DIR}) 

set(CMAKE_C_STANDARD 11) 
set(SOURCE_FILES main.c) 

add_executable(test ${SOURCE_FILES}) 
target_link_libraries(test ${LUA_LIBRARIES}) 
+0

ありがとう!私はcとC++コンパイラとCMakeについて学び続けるつもりです。これは多くの助けとなりました –

関連する問題