在premake4脚本中使用库时,我遇到了某些问题。
1)在Windows 10上使用premake4脚本创建共享库(.dll)时,它会很好地创建dll,但也会创建小型(2K)静态库。
就我而言,我正在使用premake4脚本创建一个名为MathLib.dll的共享库。它可以正确执行此操作,但是它还创建了一个名为libMathLib.a的文件,大小为2K。 (它可能是空的。)
我不明白为什么需要用premake4生成的Makefile来创建libMathLib.a,而实际上目的是创建一个.dll文件。我认为这可能是premake4的错误,我在github上的premake4问题跟踪器上提出了这个问题。
premake4 lua脚本如下:
-- Dir : Files > C > SW > Applications > Samples >
-- premakeSamples > premake-sharedlib-create
--#!lua
-- A solution contains projects,
-- and defines the available configurations
solution "MathLib"
configurations { "Debug", "Release" }
-- A project defines one build target
project "MathLib"
kind "SharedLib"
language "C++"
files { "**.h", "**.cpp" }
includedirs {"../../../ProgramLibraries/Headers/"}
-- Create target library in Files > C > SW >
-- Applications > ProgramLibraries
targetdir "../../../ProgramLibraries/"
configuration "Debug"
defines { "DEBUG" }
flags { "Symbols" }
configuration "Release"
defines { "NDEBUG" }
flags { "Optimize" }
-- Register the "runmakefile" action.
newaction
{
trigger = "runmakefile",
description = "run the generated makefile to create the executable using the default ('debug' config)",
execute = function()
os.execute("make")
end
}
-- Register the "runmakefilerelease" action.
newaction
{
trigger = "runmakefilerelease",
description = "run the generated makefile to create the executable using the 'release' config)",
execute = function()
os.execute("make config=release")
end
}
2)上面的问题比听起来更严重。假设我已经使用单独的premake4脚本在Libraries目录中创建了一个名为libMathLib.a的真正静态库。随后,如果我还在与静态库相同的目录中创建一个名为MathLib.dll的共享库,则将创建一个虚拟静态库(可能为空)并替换早期的正版静态库。
3)-编辑-:我已经报告了这一点(使用静态库)是一个问题,但是现在它已经开始工作。我不知道原因,但是据我所知,唯一的区别是我已经关闭并重新启动了PC(因此重新启动了Windows 10上的MSYS会话)。因此,我要删除这一点。
如何解决以上两个问题?