Skip to content

Instantly share code, notes, and snippets.

@Shchvova
Last active January 3, 2017 04:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Shchvova/821b1868e556238eae2b to your computer and use it in GitHub Desktop.
Save Shchvova/821b1868e556238eae2b to your computer and use it in GitHub Desktop.
Simple Lua + C++ template

#Simlistic Lua 5.2 and C++ project To build, fetch lua and run do the following:

#fetch this gist
git clone https://gist.github.com/821b1868e556238eae2b.git clue
cd clue
#configure everything with cmake
cmake .
#download and build lua, build project
make
#run project
bin/clue
cmake_minimum_required(VERSION 2.8.4)
project(clue)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/bin/")
include("lua.cmake")
set(SOURCE_FILES main.cpp)
add_executable(clue ${SOURCE_FILES})
add_dependencies(clue ${Lua_TARGET})
target_link_libraries(clue ${LUA_LIBRARIES})
include(ExternalProject)
if(WIN32)
set(cExtraFlags)
set(cxxExtraFlags)
else()
set(cExtraFlags -w)
set(cxxExtraFlags -w)
endif()
# a cmakeified version of lua
ExternalProject_Add(lua
URL https://github.com/LuaDist/lua/archive/5.2.3.tar.gz
URL_MD5 710bba91186bb672b829cd05d78b614d
CMAKE_ARGS -Wno-dev
CMAKE_CACHE_ARGS
-DBUILD_SHARED_LIBS:BOOL=OFF
-DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
"-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} ${cxxExtraFlags}"
-DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
"-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} ${cExtraFlags}"
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
)
ExternalProject_Get_Property(lua INSTALL_DIR)
ExternalProject_Get_Property(lua BINARY_DIR)
if(WIN32)
set(LUA_LIBRARIES debug ${BINARY_DIR}/Debug/lua.lib
optimized ${BINARY_DIR}/Release/lua.lib)
else()
set(LUA_LIBRARIES ${BINARY_DIR}/liblua.a)
endif()
set(lua_include_dir ${INSTALL_DIR}/include)
include_directories(SYSTEM ${lua_include_dir})
link_directories(${BINARY_DIR})
set(Lua_TARGET lua)
#include <iostream>
#include <lua.hpp>
int main() {
lua_State *L = luaL_newstate();
luaL_openlibs(L);
const char *lc = "print('Hello from lua!');";
luaL_loadbuffer(L, lc, strlen(lc), 0);
lua_pcall(L, 0, 0, 0);
lua_close(L);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment