这是我的C代码:
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
int main(void)
{
lua_State *L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L, "/home/test/test.lua");
lua_close(L);
return 0;
}
使用以下命令编译代码:
sudo gcc /home/test/src/main.c -llua -ldl -lm -o /home/test/test.o
好的,正在发挥作用。 但是,如果我使用CMakeLists.text,编译失败!
CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project(testc C)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_C_FLAGS} -llua -ldl -lm")
file(GLOB headers RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/*.h)
add_executable(testc src/main.c)
target_link_libraries(testc ${LUA_LIBRARIES})
install(TARGETS testc DESTINATION ${CMAKE_CURRENT_SOURCE_DIR})
错误:
[ 50%] Building C object CMakeFiles/testc.dir/src/main.c.o
[100%] Linking C executable testc
CMakeFiles/testc.dir/src/main.c.o: In function `main':
main.c:(.text+0x9): undefined reference to `luaL_newstate'
main.c:(.text+0x19): undefined reference to `luaL_openlibs'
main.c:(.text+0x2f): undefined reference to `luaL_loadfilex'
main.c:(.text+0x5a): undefined reference to `lua_pcallk'
main.c:(.text+0x6b): undefined reference to `lua_close'
为什么?
谢谢。