MSB012 在尝试 link Linux 带有可执行文件的静态库时 Visual Studio 中出现警告

MSB012 Warning in Visual Studio while trying to link Linux static lib with executable

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

Warning MSB8012

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

does not match the Library's OutputFile property value

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

This may cause your project to build incorrectly.

To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Lib.OutputFile).

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

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

上远程编译还能做什么

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

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

No such file or directory

我知道二进制库需要在远程机器上,这样编译器才能知道。我不知道如何让 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

以这种方式构建的要点是回购是 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

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

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