我试图用CodeLite编译静态库项目并收到错误:
ar rcus ./Debug/libtestlib.a @"testlib.txt"
ar: @testlib.txt: No such file or directory
但我有文件testlib.txt。当我检查导出的makefile时,我看到:
$(AR) $(ArchiveOutputSwitch)$(OutputFile) @$(ObjectsFileList) $(ArLibs)
对我来说,在ObjectsFileList附近看到@符号是很奇怪的。我应该如何在CodeLite中编译静态库项目?
答案 0 :(得分:3)
@"testlib.txt"
是一种让链接器(或你的ar
)从文件而不是从命令行读取对象列表的方法,这是因为在某些操作系统上,程序可以从命令行接受输入字符串的限制。
通常这不是问题(你没有提到你的操作系统和CodeLite版本是什么)但如果它是一个问题(如你的情况),你可以从CodeLite的菜单栏中禁用它:
Settings -> Build Settings -> Compilers -> <Your Compiler Name> -> Advanced
并取消选中该选项: “通过文件将对象列表传递给链接器”,你的问题就会消失
供参考: 我只在OSX上看到过这个错误,这是这种情况吗?
叶兰