【发布时间】: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 解决方案并添加现有项目。
编辑: 这与我的问题有关: 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