如何从 .pro 文件的列表中删除某些文件?

How to remove certain file from a list in .pro file?

在编译项目1时,包括main.o在内的一堆目标文件被放入build文件夹。

现在我喜欢在项目 2 中像使用库一样使用这些目标文件,所以您可以通过[=17= 将所有文件手动添加到 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 returns 一个可编辑的文件列表,可以在 .pro 文件中编辑。 并且在 NOT WORKING 中代码编译出错,因为 qmake 直接提取所有 .o 文件而无法编辑列表。

在qmake文档中我发现qmake内置的$$files函数是一个替换函数。