【问题标题】:MSB012 Warning in Visual Studio while trying to link Linux static lib with executable尝试将 Linux 静态库与可执行文件链接时,Visual Studio 中出现 MSB012 警告
【发布时间】:2019-08-06 21:31:41
【问题描述】:

我在使用 Debian VM 上的编译器远程构建静态库时遇到此错误。

警告 MSB8012

目标路径 (D:\repo-path\VisualStudio\MyLibrary\bin\x64\Debug\libMyLibrary.a)

与库的 OutputFile 属性值不匹配

(D:\repo-path\VisualStudio\MyLibrary\~\projects\MyLibrary\bin\x64\Debug\libMyLibrary.a)。

这可能会导致您的项目构建不正确。

要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Lib.OutputFile) 中指定的值匹配。

我在解决方案配置中的任何地方都找不到 %(Lib.OutputFile),所以我不知道它在说什么。

我有两个解决方案项目,其中一个是库,另一个是依赖于库的可执行文件。我将该库设置为可执行文件解决方案中的参考。我没有对它做任何其他事情,因为我不确定在 linux 上远程编译还能做什么。

使用引用的库构建可执行文件时,出现此错误

/home/user/projects/MyLibrary/../../VisualStudio/MyLibrary/bin/x64/Debug/MyLibrary.a:

没有这样的文件或目录

我知道库二进制文件需要在远程机器上,以便编译器知道它。我不知道如何让 Visual Studio 把它放在那里,以便我如何做解决方案参考。


现在,我应该解释一下这里的目录结构。
MyExecutable 和 MyLibrary 是单独的 repos,由于 MyLibrary 是 MyExecutable 的依赖项,因此它的 repo 是 MyExecutable 的子模块。

所以层次结构看起来像这样

my-library\
   .git\
   src\
   VisualStudio\
      MyLibrary\
         MyLibrary.sln


my-executable\
   .git\
   src\
   my-library\
      .git\
      src\
   VisualStudio\
      MyExecutable\
         MyExecutable.sln
      MyLibrary\
         MyLibrary.sln

以这种方式构建的要点是,repos 与 IDE 无关,并且因为 cmake 无法构建针对 Linux 的 VS 解决方案,因为它假定 Windows 平台。 Visual Studio 项目被放入一个被忽略的目录中。

我只是自己手动启动 VS 解决方案并添加现有项目。


这是 MyLibrary 的解决方案配置

对于 MyExecutable


编辑: 这与我的问题有关: https://developercommunity.visualstudio.com/content/problem/196761/linux-c-project-doesnt-allow-to-specify-path-to-a.html

【问题讨论】:

    标签: linux visual-studio cross-platform static-libraries static-linking


    【解决方案1】:

    发现所有这些问题目前都是 Visual Studio for Linux C++ 中的错误。

    https://developercommunity.visualstudio.com/content/problem/579152/linux-c-remote-libraries-do-not-archive-ie-compila.html

    【讨论】:

      猜你喜欢
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 2017-03-16
      相关资源
      最近更新 更多