如何解决如何从 .pro 文件的列表中删除某些文件?
在编译项目 1 时,包括 main.o
在内的一堆目标文件被放入构建文件夹。
现在我喜欢在项目 2 中像使用库一样使用这些目标文件,因此您可以手动将所有文件添加到 LIBS 分配中
//project2.pro
LIBS += $$buildfolderProject1/compressedair.o \
$$buildfolderProject1/connectca.o \
$$buildfolderProject1/controlpanelca.o \
$$buildfolderProject1/compressedair.o \
$$buildfolderProject1/moc_compressedair.o \
$$buildfolderProject1/moc_controlpanelca.o \
$$buildfolderProject1/moc_screenca.o \
$$buildfolderProject1/qrc_resources.o \
$$buildfolderProject1/screenca.o
更方便的方法是这样的:
//project2.pro
LIBS += $$buildfolderProject1/*.o
但由于 buildfolderProject1 还包含 Project1 的 main.o
,因此您在编译时会出错(main 的多重定义)。
所以我尝试使用以下方法删除 main.o
:
LIBS -= $$buildfolderProject1/main.o
但这不适用于 LIBS += $$buildfolderProject1/*.o
方法。
解决方法
有一种方法可以从列表中删除某个文件。说明:
不工作:
//project2.pro
LIBS += $$buildfolderProject1/*.o
LIBS -= LIBS -= $$buildfolderProject1/main.o
工作:
//project2.pro
myObjectFileList = $$files($$buildfolderProject1/*.o)
myObjectFileList-= $$buildfolderProject1/main.o
LIBS += myObjectFileList
我完全不明白,但不知何故它有一些事情要做,$$files 返回一个可编辑的文件列表,可以在 .pro 文件中进行编辑。 并且在 NOT WORKING 代码编译会出错,因为 qmake 直接提取所有 .o 文件而无法编辑列表。
在qmake文档中我发现qmake内置的$$files函数是一个替换函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。