MSVC LNK4099警告的分析与解决
https://www.cnblogs.com/fqucuo/p/4887083.html
问题出在Debug配置的-Zi
选项上。这个选项用于生成目标项目的调试符号。
我产生该警告的过程是,使用CMake配置第三方项目,编译并安装后,删除了编译时的文件夹。
因而猜测,调试符号并不是嵌入到可执行文件(或者库)里的。
MSVC应该是在链接静态库文件的时候,根据写在文件里的信息去寻找(应该也是PATH里的)对应的符号数据库文件吧。(猜测一下,那岂不是把pdb文件复制到lib对应目录下就好了么)
解决方法之一如引用中所说,删除-Zi
选项,不生成额外的调试文件,就可以避免MSVC找不到对应的符号文件而报出的警告。
另一个解决方法,个人认为,如果不是在第三方库的初学阶段,可以考虑将该库的源码添加至项目中,作为主项目的依赖随项目一起编译,然后配置一下输出目录和输出文件名和主项目在同一目录即可。这样至少项目树结构会显得清晰一些。(应该不会有人不知道在没有更新目标target
的选项或是源文件的情况下,VS是可以自动跳过该目标的重新编译的吧)