VS2017也推出很久了,在单位的时候写linux的服务端程序只能用vim,这让用惯了IDE的我很难受。
加上想自己撸一套linux上的轮子,决定用VS开工远程编写调试linux程序。
在windows下编写静态库并在另一个项目中引用很简单
新建项目的时候选择静态库,进去把代码撸好,即可编译出静态库*.lib
随后在希望使用该静态库的项目中设置一下链接器“附加库目录”为"../Debug"(和你的输出路径有关),然后添加"附加依赖项"静态库名.lib",然后就可以顺利的编译静态库了。
但是在linux下这件事却让我头疼了几天,我一开始也准备按照windows下的套路来解决,解决在新建项目的时候压根没看到静态库这一选项……
不过还好在常规里面找到了“配置类型”选项,设置成“静态库(.a)”就可以了。
在准备使用静态库的时候,真正的麻烦来了,一开始我按照windwos下的思路,当前项目链接时的工作目录就是解决方案的路径,所以按照编译出来的文件结构写下了“附加库目录”(../common/bin/x64/Debug),然后去填写“附加依赖项”(“libcommon.a”),编译的时候就华丽丽的出错了,提示没有这个文件……
后来尝试过吧“libcommon.a”改成““common””、“附加库目录”直接指定成linux上的绝对地址等方案,但是很可惜没有任何一个方案可以。
在linux下自己写参数指定绝对地址能够顺利将静态库链接成功,但是用vs的环境却总是失败,这个时候有点让我怀疑人生了。
甚至一度想用VS写好代码然后去linux下写MAKEFILE,手动编译。但是转念一想,这岂不是回到远古时代了?不行,我得干掉这个问题。
后来突发奇想,写了一个小程序myhelp,放进了usr/bin/中
int main(int argc,char **argv) { char buf[80]; getcwd(buf, sizeof(buf)); std::ofstream f; f.open("/home/reskai/work.txt"); if (f) { f << buf; f << "\r\n"; while (argc-- > 0) { f << *argv++ << "\r\n"; } f.close(); } return 0; }