premake5:如何在vs2015中将运行时库设置为多线程DLL(/ MD)

时间:2017-06-27 07:02:44

标签: c++ visual-studio-2015 autocad premake

kind "SharedLib"
language "C++"
defines "DLL_EXPORT"
targetname "read_cad_file"
targetextension ".arx"

我正在使用objectARX开发,我想使用 premake5 vs2015 编译我的项目。脚本中的一些设置如上所述。 在此设置下,在属性 - > C / C ++ - >代码生成 - >运行时库中,运行时库为多线程调试(/ MTd)。 我想问一下如何使用premake5将其更改为多线程DLL(/ MD)?非常感谢:)

6 个答案:

答案 0 :(得分:1)

您要查找的密钥是staticruntime。虽然默认情况下应将其关闭,但您也可以显式将其关闭

staticruntime "Off"

答案 1 :(得分:0)

我不知道运行时的静态版本或DLL版本。但调试和发布应该可以通过runtime关键字进行切换。参见:

https://github.com/premake/premake-core/wiki/runtime

答案 2 :(得分:0)

   configuration "Debug"
      buildoptions "/MDd"
   configuration "Release"
      buildoptions "/MD"
   configuration {}

答案 3 :(得分:0)

所以,我的项目不是共享库,而是一个exe。

我在“过滤器”部分添加了以下内容:

filter "configurations:Debug"
    architecture "x86_64"
    links {"libprotobufd"}
    defines {"DEBUG"}
    symbols "On"
    libdirs { baseLibPath .. "debug" } -- baseLibPath was defined elsewhere
    postbuildcommands {}
    debugdir "$(TargetDir)"
    flags {"staticruntime"} -- this is what worked for me

我不确定是否能解决您的问题,但您可以尝试一下吗?

我还是个新手,所以要加一点盐。

答案 4 :(得分:0)

为了在 premake 中更改运行时库,您需要使用两个关键字 - staticruntimeruntime

在预编译中使用 /MT:

staticruntime "on"
runtime "Release"

在预制作中使用 /MTd:

staticruntime "on"
runtime "Debug"

在预制作中使用 /MD:

staticruntime "off"
runtime "Release"

在预编译中使用 /MDd:

staticruntime "off"
runtime "Debug"

答案 5 :(得分:-1)

project "read_cad_file"
  kind "SharedLib"
  language "C++"
  defines "DLL_EXPORT"
  targetname "read_cad_file"
  targetextension ".arx"
  files "*.cpp"
  files "*.def"
  files "*.lua"
  sysincludedirs "../../../third_party/object_arx/inc-x64/"     
  sysincludedirs "../../../third_party/object_arx/inc/"
  includedirs "../../../third_party/object_arx/inc/"
  includedirs "../../../third_party/object_arx/inc-x64/"
  libdirs "../../../third_party/object_arx/lib-x64/"
  links "ac1st22.lib"
  links "acad.lib"
  links "accore.lib"
  links "acdb22.lib"
  links "acge22.lib"
  links "acgiapi.lib"
  links "acui22.lib"
  links "adui22.lib"
  links "advapi32.lib"
  links "rxapi.lib"

这是完整的预制文件。