首页 > 其他分享 >cmake编译lua

cmake编译lua

时间:2024-02-26 22:23:49浏览次数:28  
标签:Src cmake Name lua Lua 编译 src

lua 5.1.5源码

 

创建一个CMakeList.txt文件

cmake_minimum_required(VERSION 3.10.0)

set(Proj_Name "mylua")
project(${Proj_Name})

# 使用的语言标准是C89/ANSI C
set(CMAKE_C_STANDARD 90)

# 头文件搜索目录
include_directories("src")

# 源码文件
aux_source_directory("src" Lua_Lib_Src) #遍历src文件夹的所有源码文件, 存放在变量Lua_Lib_Src上
list(REMOVE_ITEM Lua_Lib_Src "src/lua.c")

file(GLOB Lua_Src "src/lua.c")

aux_source_directory("src" Luac_Src) #遍历src文件夹下的所有源码文件, 存放在变量Luac_Src上
list(REMOVE_ITEM Luac_Src "src/lua.c")

add_definitions(-DLUA_BUILD_AS_DLL) #定义宏LUA_BUILD_AS_DLL

#生成动态库
set(Dll_Name "lua51")
add_library(${Dll_Name} SHARED ${Lua_Lib_Src})

#生成静态库
#add_library("lua51_s" STATIC ${Lua_Lib_Src})

# 生成可执行文件
set(Lua_Exe_Name "lua")
add_executable(${Lua_Exe_Name} ${Lua_Src}) #生成exe
target_link_libraries(${Lua_Exe_Name} ${Dll_Name})

set(Luac_Exe_Name "luac")
add_executable(${Luac_Exe_Name} ${Luac_Src}) #生成exe

 

用MinGW编译

1, 先用cmake-gui根据CMakeList.txt生成make文件

等同于用cmake命令cmake -S . -B build -G "MinGW Makefiles"

 

2, 用MinGW根据生成的make文件编译代码

命令行 -> 进入build文件夹 -> 输入mingw32-make, 就会根据make文件开始编译了

 

3, 编译后生成的文件

 

4, 如果之前勾了GNUtoMS,将额外生成Windows平台上的库文件(即:.lib文件)

 

 

用Visual Studio编译

1, 先用cmake-gui根据CMakeList.txt生成.vcxproj和.sln文件

 

2, 双击生成的sln文件,打开Visual Studio,然后生成解决方案

 

3, 编译后生成的文件

 

 

参考

Windows下lua的编译与环境搭建_lua windows-CSDN博客

c++ 编译添加dll_VS2019编译lua源码-CSDN博客

 

标签:Src,cmake,Name,lua,Lua,编译,src
From: https://www.cnblogs.com/sailJs/p/18033751

相关文章

  • ubuntu16 安装cmake
    CMakedeveloperteaminKitwareIncprovidesAPTrepositiory.ItallowsyoutoinstalllatestCMakeviaapt-get.IfyouareusingaminimalUbuntuimageoraDockerimage,youmayneedtoinstallthefollowingpackages:sudoapt-getupdatesudoapt-getin......
  • cpp文件 编译通过,但是运行时提示找不到动态库。
    如果编译通过了,但是在运行时提示找不到动态库,通常是因为系统无法找到正确的动态库路径。1.**确认动态库路径**:首先,确保动态库文件存在于编译时指定的路径中。你可以检查编译时是否指定了正确的库路径,并且库文件是否位于该路径中。2.**设置LD_LIBRARY_PATH环境变量**:在运行程序......
  • Xmake v2.8.7 发布,新增 cosmocc 工具链支持,一次编译到处运行
    Xmake是一个基于Lua的轻量级跨平台构建工具。它非常的轻量,没有任何依赖,因为它内置了Lua运行时。它使用xmake.lua维护项目构建,相比makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。我们......
  • Lua学习笔记之迭代器、table、模块和包、元表和协程
    迭代器迭代器是一种对象,它能够来遍历标准库模板容器中的部分或全部元素,每个迭代器对象代表容器中确定的地址,在Lua中迭代器是一种支持指针类型的结构,他可以遍历集合的每一个元素。泛型for迭代器泛型for自己内部保存迭代函数,实际上保存三个值:迭代函数、状态常量、控制变量。泛型......
  • ROS2 humble交叉编译环境配置
    目录配置toolchain文件:库文件交叉编译指令:问题点:1、find_package找不到自定义依赖包的问题2、libarmadillo.so.10:undefinedreferenceto`xxx'3、/usr/bin/moc找不到直接上干货,本文将介绍配置ROS2的交叉编译环境编译平台:x86ubuntu22.04目标平台:armv8ubuntu22.04ROS2......
  • UVA12422 (Kengdie) Mua (II) - Expression Evaluator 题解
    题目传送门闲话蒟蒻的第一篇黑题题解!连着花了\(12\)个小时才做出来,打代码\(6\)小时,调试\(6\)小时。一开始怎么编也编不过,直到看到了tiger大神的题解才豁然开朗。思路本题主要是输出函数或运算式子的结果,最重要的就是判断优先级。tiger大神提出了表达式树法和递归......
  • UE5源码版本在多个工程来回切换时重复编译引擎问题
    细看UBT日志,已经给出了提示11>ParsingheadersforActionRPG11>RunningInternalUnrealHeaderToolD:\UEProject\ActionRPG\ActionRPG.uprojectD:\UEProject\ActionRPG\Intermediate\Build\Win64\ActionRPG\Development\ActionRPG.uhtmanifest-WarningsAsError......
  • 编译器负责转换源代码
    能够把C语言等高级编程语言编写的源代码转换成本地代码的程序称为编译器。每个编写源代码的编程语言都需要其专用的编译器。将C语言编写的源代码转换成本地代码的编译器称为C编译器。编译器首先读人代码的内容,然后再把源代码转换成本地代码。编译器中就好像有一个源代码同本地......
  • 3D Slicer编译错误:Variable Slicer_WC_LAST_CHANGED_DATE is expected to be defined.
    3DSlicer编译错误:VariableSlicer_WC_LAST_CHANGED_DATEisexpectedtobedefined. 解决:1、找到SlicerMacroExtractRepositoryInfo.cmake路径:F:\1_Slicer\CMake\SlicerMacroExtractRepositoryInfo.cmake2、添加 set(${wc_info_prefix}_WC_LAST_CHANGED_DATE"0000-00......
  • macos arm64 编译静态库
    下载ffmpeghttps://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2编译sudo./configure--enable-static--enable-gpl--enable-libx264--prefix=/opt/local--extra-cflags=-I/opt/local/include--extra-ldflags=-L/opt/local/lib--pkg-config-flags="--static&qu......