【问题标题】:Statically link to vcruntimexxx.dll while dynamically link to ucrtbase.dll with Cmake静态链接到 vcruntimexxx.dll,同时使用 Cmake 动态链接到 ucrtbase.dll
【发布时间】:2017-02-18 09:17:03
【问题描述】:

在命令行中使用cl.exe 构建Visual C++ 时,我可以使用cl /MT /GL main.cpp /link /LTCG /NODEFAULTLIB:libucrt.lib ucrt.lib 执行此操作。我可以通过运行tasklist /m /fi "imagename eq main.exe" 来验证结果,该列表将包含 ucrtbase.dll 但不包含预期的 vcruntimexxx.dll。

现在我真正的问题是:我想像上面一样构建https://github.com/WebAssembly/binaryen。我在主 CMakelists.txt 中添加了以下内容:

  ADD_COMPILE_FLAG("/MT")
  ADD_COMPILE_FLAG("/GL")
  ADD_LINK_FLAG("/LTCG")
  ADD_LINK_FLAG("/NODEFAULTLIB:libucrt.lib")
  ADD_LINK_FLAG("ucrt.lib")

构建的程序仍然动态链接到 vcruntimexxx.dll。

如何用 CMake 做到这一点?

【问题讨论】:

    标签: visual-studio visual-c++ dll cmake


    【解决方案1】:

    CMake 中没有这样的命令。使用target_compile_options 代替ADD_COMPILE_FLAG 和target_link_libraries 代替ADD_LINK_FLAG。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多