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++ 中的错误。
我在 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++ 中的错误。